【发布时间】:2014-03-23 18:28:25
【问题描述】:
关于如何标记句子的指南有很多,但我没有找到任何相反的方法。
import nltk
words = nltk.word_tokenize("I've found a medicine for my disease.")
result I get is: ['I', "'ve", 'found', 'a', 'medicine', 'for', 'my', 'disease', '.']
是否有任何功能可以将标记化的句子恢复到原始状态。 tokenize.untokenize() 函数由于某种原因不起作用。
编辑:
我知道我可以这样做,这可能会解决问题,但我很好奇是否有一个集成功能:
result = ' '.join(sentence).replace(' , ',',').replace(' .','.').replace(' !','!')
result = result.replace(' ?','?').replace(' : ',': ').replace(' \'', '\'')
【问题讨论】:
-
你是如何从一个使用了
have的句子中得到've的?这是 nltk 实际所做的,还是转录错误? -
我已经修改了标记化的结果。无论如何,这是针对一般情况的,因此您可以将 Ive 放在原句中。
-
我很确定您的要求是不可能的。如果您只有
"I"和"'ve"的裸字符串,那么人们很容易看到它们并说“哦,这两个应该一起没有空格”,但是没有简单的程序可以解决这个问题。如果 NLTK 从原始句子中得出的原始词性信息可用,则可用于取消标记,但tokenize.untokenize()旨在与tokenize.tokenize()一起使用,而不是nltk.tokenize()。您可能想阅读 NLTK 的免费在线书籍:nltk.org/book -
我编辑了问题,所以源文本有
've以匹配答案文本。
标签: python python-2.7 nltk