我是python的新手并且使用书中的示例进行练习。 我可以说一句话:
>>> from nltk.stem import PorterStemmer
>>> stemmer=PorterStemmer()
>>> stemmer.stem('programming')
'program'
但我不能通过Porter stemmer运行文本文件的前50个单词。
编辑:除了split()之外还有什么方法吗? split()有时会给出错误的结果。
答案 0 :(得分:1)
如果您正在读取每行只有一个令牌的文件,则应在运行词干分析器之前剥离新行的令牌。
from nltk.stem.porter import PorterStemmer
stemmer = PorterStemmer()
with open('tokens.txt', 'r') as fp:
tokens = fp.readlines()
for t in tokens:
s = stemmer.stem(t.strip())
print(s)
答案 1 :(得分:-1)
怎么样?
wholefile = open("text.txt", "r").read()
words = wholefile.split()
stems = [ stemmer.stem(word) for word in words]
编辑:实际上,评论海报给你的相同,但更全面。使用他的解决方案。
EDIT2:谢谢,falsetru:)