python - 计算功能词的频率

标签 python nlp nltk word-frequency part-of-speech

我想计算function words的频率在 Python/NLTK 中。我看到有两种方法可以解决这个问题:

  • 使用词性标注器并总结构成功能词的词性标签
  • 创建虚词列表并执行简单的查找

第一种情况的问题是,我的数据很嘈杂,而且我不知道(确定)哪些词性标签构成功能词。第二种情况的问题是我没有列表,并且由于我的数据很嘈杂,因此查找不会准确。

与第二个相比,我更喜欢第一个或任何其他可以为我提供更准确结果的示例。

最佳答案

我刚刚使用了LIWC英语 2007 词典(我付了同样的钱)并执行了一个简单的查找。欢迎任何其他答案。

我必须说,我对这里几个答案的冲动感到有点惊讶。因为,有人索要代码。这就是我所做的:

''' Returns frequency of function words '''
def get_func_word_freq(words,funct_words):
    fdist = nltk.FreqDist([funct_word for funct_word in funct_words if funct_word in words]) 
    funct_freq = {}    
    for key,value in fdist.iteritems():
        funct_freq[key] = value
    return funct_freq

''' Read LIWC 2007 English dictionary and extract function words '''
def load_liwc_funct():
    funct_words = set()
    data_file = open(liwc_dict_file, 'rb')
    lines = data_file.readlines()
    for line in lines:
        row = line.rstrip().split("\t")
        if '1' in row:
            if row[0][-1:] == '*' :
                funct_words.add(row[0][:-1])
            else :
                funct_words.add(row[0])
    return list(funct_words)

任何用 Python 编写过代码的人都会告诉您,执行查找或提取具有特定 POS 标签的单词并不是什么复杂的事情。补充一下,NLP(自然语言处理)和NLTK(自然语言工具包)的标签(关于问题)对于精明的人来说应该足够了。

无论如何,我理解并尊重在这里回复的人的情绪,因为大部分都是免费的,但我认为我们至少可以做的是对问题发布者表现出一点尊重。正如正确指出的那样,当你帮助别人时,你就会得到帮助,同样,当你尊重别人时,你就会得到尊重。

关于python - 计算功能词的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5819840/

相关文章:

python - 如何在 gensim 的 LDA 模型中获取主题编号

nlp - 如何避免 NLP 中的顺序处理?

python - 将 Pandas 数据框列传递给 NLTK 分词器

python - FreqDist().plot() 作为直方图

python - 消息 : Error: Polling for changes failed: NetworkError when attempting to fetch resource while downloading file through Selenium and FirefoxProfile

python - 添加到列表与增量

python - django-registration 简单的后端设置

python - 使用 pandas 系列从文件中获取文件夹路径

java - 使用自然语言处理从句子中提取某些单词

python - 我的for循环与yield相结合的问题