在Python中为短语(bigram、n-gram)创建词云

问题描述 投票:0回答:1

我正在使用

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元语法进行类似的实现。请告诉我该如何解决这个问题?

python word-cloud
1个回答
0
投票

你可以使用参数- 搭配(布尔值,默认=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
© www.soinside.com 2019 - 2024. All rights reserved.