Pythonポートを使用していますPorterStemmer
ポーターステミングアルゴリズム(または「ポーターステマー」)は、英語の単語から一般的な形態学的および非屈曲的な語尾を削除するためのプロセスです。その主な用途は、情報検索システムをセットアップするときに通常行われる用語正規化プロセスの一部としてです。
以下について..
あなたがする必要がある他のことは、各単語をその語幹に減らすことです。たとえば、単語、、
sing
はsings
すべてsinging
同じ語幹、つまり。を持っていますsing
。これを行うには、ポーターのアルゴリズムと呼ばれる、合理的に受け入れられている方法があります。それを実行するものを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");
出力
マイケルは
期待される出力
マイケルは歌っている
私は何が間違っているのですか?