如何用NLTK从句子中获得单词对?

时间:2014-09-17 02:41:00

标签: python nlp nltk

我想接受一句话:

sentence = "How many people are here"?

并返回一个短语列表:

pairs = ["How many", "many people", "people are", "are here"]

我试过

   tokens = nltk.word_tokenize(sentence)
   pairs = nltk.bigrams(tokens)

取而代之的是<generator object bigrams at 0x103697820>

我是nltk的新手很抱歉这是如此关闭:)帮助赞赏!

2 个答案:

答案 0 :(得分:6)

正如您所提到的,nktk.bigrams()函数返回一个生成器对象。 需要迭代生成器以获取值。这可以使用list()完成,也可以循环生成器。

下面,我在列表推导中循环/迭代生成器对象(nktk.bigrams()的结果),同时使用"".join()组合单词(列表)单词,根据需要,由发电机脱落成一根绳子。

tokens = nltk.word_tokenize(sentence)
pairs = [ " ".join(pair) for pair in nltk.bigrams(tokens)]
  
    

['多少',......]

  

答案 1 :(得分:0)

这应该可以解决您的问题:

import re
f = open('D:\Jupyter notebook\SNPQ.txt','r')
text = f.read()
text = re.sub('^\n|\n$','',(text))
for no,line in enumerate(text.splitlines()):
    print('"'+'","'.join([i.replace('"','\\"').strip() for i in re.split('(?<=^[0-9]{2})([0-9]{13}| {13})|  +',text.splitlines()[no].strip()) if i != None])+'"')

谢谢:)