我正在使用
wordcloud
库来创建词云,但我需要“短语”云。
当我搜索为短语创建词云时,我得到了很多点击,但仅限于词云。
如何为字符串中的频繁短语创建词云?
这就是我到目前为止所做的(取自 stackoverflow):
wordcloud = WordCloud(
background_color='white',
stopwords=stopwords,
max_words=200,
max_font_size=40,
scale=3,
random_state=1
).generate(str(postData))
但我想要对二元语法/n元语法进行类似的实现。请告诉我该如何解决这个问题?
你可以使用参数- 搭配(布尔值,默认=True) 含义-是否包含两个单词的搭配(二元组)。如果使用generate_from_frequencies,则忽略。 wordcloud=WordCloud(搭配=True).generate(text)
需要记住的是,它将根据 Unigram 和 Bigram 的频率来决定该单词/短语是否会显示在词云中 并且由于单个单词出现的频率将大于两个单词一起出现的频率,因此很可能很少有二元组会出现在 WordCloud 中 但我不知道有什么直接的方法可以得到 n-gram,其中 n>=3
您必须基本上创建一个字典,其中键为单词和短语,值为按单词总出现次数归一化的频率 然后generate_frequencies函数可以用作- wordcloud=WordCloud(colormap=cmap).generate_from_frequencies(wordFreq)
单字提取示例函数- 但要制作二元组和三元组,还需要考虑更多的事情
def extractWords(text):
completeList=[]
lines=text.split("\n")
for line in lines:
words=line.split(" ")
for word in words:
if(word not in stopwords and words!=""):
completeList.append(word)
return completeList