当前位置: 首页 > 面试题库 >

特定单词的NLTK搭配

商飞航
2023-03-14
问题内容

我知道如何使用NLTK来获得二元组和三元组的搭配,并将它们应用于我自己的语料库。代码如下。

但是我不确定(1)如何获取特定单词的搭配?(2)NLTK是否具有基于对数似然比的搭配度量?

import nltk
from nltk.collocations import *
from nltk.tokenize import word_tokenize

text = "this is a foo bar bar black sheep  foo bar bar black sheep foo bar bar black  sheep shep bar bar black sentence"

trigram_measures = nltk.collocations.TrigramAssocMeasures()
finder = TrigramCollocationFinder.from_words(word_tokenize(text))

for i in finder.score_ngrams(trigram_measures.pmi):
    print i

问题答案:

试试这个代码:

import nltk
from nltk.collocations import *
bigram_measures = nltk.collocations.BigramAssocMeasures()
trigram_measures = nltk.collocations.TrigramAssocMeasures()

# Ngrams with 'creature' as a member
creature_filter = lambda *w: 'creature' not in w


## Bigrams
finder = BigramCollocationFinder.from_words(
   nltk.corpus.genesis.words('english-web.txt'))
# only bigrams that appear 3+ times
finder.apply_freq_filter(3)
# only bigrams that contain 'creature'
finder.apply_ngram_filter(creature_filter)
# return the 10 n-grams with the highest PMI
print finder.nbest(bigram_measures.likelihood_ratio, 10)


## Trigrams
finder = TrigramCollocationFinder.from_words(
   nltk.corpus.genesis.words('english-web.txt'))
# only trigrams that appear 3+ times
finder.apply_freq_filter(3)
# only trigrams that contain 'creature'
finder.apply_ngram_filter(creature_filter)
# return the 10 n-grams with the highest PMI
print finder.nbest(trigram_measures.likelihood_ratio, 10)

它使用似然测度,还过滤掉不包含“生物”一词的Ngram。



 类似资料:
  • NLTK书中有几个单词计数的例子,但实际上它们不是单词计数,而是标记计数。例如,第1章“计算词汇”中说,下面给出了一个单词计数: 然而,它没有-它给出了一个单词和标点符号计数。你怎样才能得到一个真正的字数(忽略标点符号)? 同样,如何获得一个单词中的平均字符数?显而易见的答案是: 但是,这将关闭,因为: len(文本的字符串)是一个字符计数,包括空格 我是不是遗漏了什么?这一定是一个非常常见的NL

  • 问题内容: 好的,所以我有这个yaml文件,我想替换一个字符串 与字符串 但是我不知道该怎么办。这是完整的Yaml文件 问题答案: 假设您使用的操作系统不错,并且您的YAML文档称为:

  • 问题内容: 如何提取Linux(csh)中特定单词之后的单词?更确切地说,我有一个文件,其中只有一行看起来像这样: 我想提取单词 后面的数字。我不能使用sed,因为仅当您要提取整行时才可以使用sed。也许我可以使用awk? 另外,我有多个具有不同值的文件,所以我需要一些提取值但不依赖于值的文件。 问题答案: 与: 基本上循环遍历该行的每个单词。当您找到要查找的第一个单词时,抓住下一个单词并打印出来

  • 问题内容: 我想替换字符串语句中的单词,例如: 用实际名词/动词替换“ $ $”(含)中的字符的正则表达式是什么? 问题答案: 您不需要为此使用正则表达式。我会做 仅在需要时使用正则表达式。通常比较慢。

  • 问题内容: 我正在使用。 我想删除句子中所有出现的特定单词,但是我不想删除包含z或AZ之间其他字符的任何其他单词。 例如 ,以下是我要删除的句子: 预期产量 : 请注意,如果该单词包含+和之前或之后的任何其他单词,我也想删除它。 到目前为止,这是我尝试过的: 我正在输出: 在上面的输出中,我期望不被替换,应该完全替换。 我应该如何实现呢?任何建议将不胜感激。 编辑: 为清楚起见,这是我正在寻找的另

  • 我有像这样的字符串: (或) 我想看看这个字符串是否有单词“place”。 如果它们是我使用的字符串中的单词,则包含("place")。因为这是所有一个字符串,我尝试拆分但它给出了语法错误。你能让我知道如何获取它吗?