wordcloud python 提取英文_强制wordcloud python模块包含所有单词

本文探讨了如何在wordcloud.py中自定义停用词集,并介绍了如何处理词频分析,包括词的标准化和复数形式的合并。通过使用正则表达式进行标记化,并创建单词频率字典,可以避免内置标记化带来的问题。示例代码展示了如何生成频率字典并将其传递给WordCloud的generate_from_frequencies方法,以生成更精确的词云。

看着wordcloud.py,如果stopwords参数为None,则它使用内置的stopwords集-因此您不会禁止使用stopwords。尝试用stopwords=set()调用它。在

中的内置标记化wordcloud.py将一个单词识别为一系列字母数字字符(因此fa-so被拆分为fa-so),忽略大小写,同时合并简单的复数(例如dogs到dog)并忽略单个数字。如果您想绕过这个问题,您需要构建一个元组列表,每个元组都包含一个单词及其频率,然后调用WordCloud.generate_from_频率(频率)。在

我无法安装wordcloud,但在wordfreq函数中使用\S+(即,它将连续的非空白字符识别为一个单词)进行的这种简化标记化绝对有效:import re

from operator import itemgetter

words = "do do do do do do do do do do re re re re re mi mi fa-so fa fa fa fa fa fa fa fa fa-so fa-so fa-so fa-so fa-so so la ti do"

item1 = itemgetter(1)

def wordfreq(text):

d = {}

for word in re.findall(r"\S+", text):

# for word in re.findall(r"\w[\w']*", text):

if word.isdigit():

continue

word_lower = word.lower()

# Look in lowercase dict.

if word_lower in d:

d2 = d[word_lower]

else:

d2 = {}

d[word_lower] = d2

# Look in any case dict.

d2[word] = d2.get(word, 0) + 1

d3 = {}

for d2 in d.values():

# Get the most popular case.

first = max(d2.items(), key=item1)[0]

d3[first] = sum(d2.values())

return d3.items()

freqs = wordfreq(words)

print freqs

# prints: [('do', 11), ('la', 1), ('fa-so', 6), ('mi', 2), ('fa', 8), ('so', 1), ('ti', 1), ('re', 5)]

# pass freqs to WordCloud.generate_from_frequencies()

# maybe something like:

# wordcloud = WordCloud(ranks_only = True,stopwords=set()).generate_from_frequencies(freqs)

您可以查看的源代码wordcloud.py-您可以直接或更安全地修改它,并且可以像这个例子一样扩展/修改行为。在

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值