首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何编写一个python程序,返回一个文本中出现至少5次的所有单词?

如何编写一个python程序,返回一个文本中出现至少5次的所有单词?
EN

Stack Overflow用户
提问于 2013-01-06 13:16:51
回答 3查看 691关注 0票数 3

我只需要做这篇文章的标题所说的:编写一个python程序,返回文本中出现至少5次的所有单词。我意识到这是一个非常简单的问题。我是一个新手程序员,试图学习一些NLP技能,但由于某些原因,我无法弄清楚这一点。您的帮助将不胜感激!

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-01-06 14:18:48

你应该定义你所说的“单词”是什么意思。不同的定义会产生不同的结果。通用模板为:

代码语言:javascript
运行
复制
from collections import Counter

count = Counter(getwords(normalize(text)))
words = [w for w, c in count.items() if c >= 5]

其中你可以使用getwords()normalize()的不同定义,例如:

代码语言:javascript
运行
复制
import re

def normalize(text): # remove non-ascii, convert to lowercase
    return text.encode('ascii', 'ignore').lower().decode()

def getwords(text): # allow only a-z
    return re.findall(ur"[a-z]+", text)

或基于nltk的标记器:

代码语言:javascript
运行
复制
from nltk.tokenize import sent_tokenize, word_tokenize

def getwords(text):
    return (w for sent in sent_tokenizer(text) for w in word_tokenize(sent))
票数 4
EN

Stack Overflow用户

发布于 2013-01-06 13:25:53

作为第一步,使用str.split()对字符串进行标记如何?然后,使用for循环遍历结果数组,执行以下操作:如果单词不包含在字典的键集中,则将其添加到字典中,存储其计数,在本例中为1。否则,该单词已经包含,在字典中查找其计数,递增计数,然后将其推回到字典中。最后,当你数完单词后,去查字典,只记住那些计数为5或更多的单词。

票数 3
EN

Stack Overflow用户

发布于 2013-01-06 13:56:16

谷歌几分钟就会让你找到nltkFreqDist类。

代码语言:javascript
运行
复制
import nltk
words = nltk.word_tokenize(text)
freq1 = nltk.FreqDist(words)
words_above_five_times = [w for w in freq1.keys() if freq1[w] >= 5]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14179543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档