计算功能词的频率

Dex*_*ter 2 python nlp nltk part-of-speech word-frequency

我想计算Python/NLTK 中函数单词的频率.我认为有两种方法可以解决这个问题:

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

第一种情况下的问题是,我的数据很嘈杂,我不知道(肯定)哪些POS标签构成功能词.第二种情况下的问题是我没有列表,因为我的数据很吵,所以查找不准确.

我更喜欢第一个到第二个或任何其他会给我更准确结果的例子.

Dex*_*ter 6

我刚刚使用了LIWC English 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)
Run Code Online (Sandbox Code Playgroud)

任何在python中完成一些代码的人都会告诉你,执行查找或提取具有特定POS标签的单词并不是火箭科学.要添加,NLP(自然语言处理)和NLTK(自然语言工具包)的标签(在问题上)应该是精明的指示.

无论如何,我理解和尊重在这里回复的人的情绪,因为大部分都是免费的,但我认为我们至少可以做的是对问候海报表示一点尊重.正确地指出,当你帮助他人时,会收到帮助,当尊重他人时,同样会受到尊重.