我正在使用PorterStemmer http://tartarus.org/martin/PorterStemmer/ Python 端口 http://tartarus.org/martin/PorterStemmer/python.txt
波特词干算法(或“波特词干分析器”)是一种从英语单词中删除常见形态和屈折词尾的过程。它的主要用途是作为术语标准化过程的一部分,通常在设置信息检索系统时完成。
对于以下..
您需要做的另一件事是将每个单词简化为其词干。例如,这些词sing
, sings
, singing
都有相同的茎,即sing
。有一种合理接受的方法可以做到这一点,称为波特法
算法。您可以从以下位置下载执行该操作的程序http://tartarus.org/martin/PorterStemmer/ http://tartarus.org/martin/PorterStemmer/.
而且我已经修改了代码..
if __name__ == '__main__':
p = PorterStemmer()
if len(sys.argv) > 1:
for f in sys.argv[1:]:
infile = open(f, 'r')
while 1:
output = ''
word = ''
line = infile.readline()
if line == '':
break
for c in line:
if c.isalpha():
word += c.lower()
else:
if word:
output += p.stem(word, 0,len(word)-1)
word = ''
output += c.lower()
print output,
infile.close()
读取input
而不是来自预处理字符串的文件并返回输出。
def algorithm(input):
p = PorterStemmer()
while 1:
output = ''
word = ''
if input == '':
break
for c in input:
if c.isalpha():
word += c.lower()
else:
if word:
output += p.stem(word, 0,len(word)-1)
word = ''
output += c.lower()
return output
请注意我是否定位我的return output
到相同的缩进while 1:
它变成了infinite loop
.
用法(示例)
import PorterStemmer as ps
ps.algorithm("Michael is Singing");
Output
迈克尔是
预期输出
迈克尔正在唱歌
我究竟做错了什么?