porter-stemmer:python 中的词干提取不起作用
porter-stemmer: Stemming in python is not working
train_data = ["Consultant, changing, Waiting"]
我正在尝试使用以下代码将词干分析器应用于数据,但它保留了原始数据:
stemmer = stem.porter.PorterStemmer()
train_data = train_stemmer
for i in range(len(train_stemmer)):
train_stemmer[i] = stemmer.stem(train_stemmer[i])
代码运行良好,但没有产生我预期的结果,即:
["Consult, change, Wait"]
有两件事跳出来了:
train_data
在你的问题中是一个包含一个字符串 ["Consult, change, Wait"]
的列表,而不是一个包含三个字符串的列表 ["Consult", "change", "Wait"]
- 词干自动转换为小写
如果您希望列表包含一个字符串,这应该可以正常工作:
from nltk.stem import porter
stemmer = porter.PorterStemmer()
# List of one string
string_in_list = ["Consult, change, Wait"]
for word in string_in_list:
print(stemmer.stem(word))
print("----")
如果您想要一个包含三个字符串的列表,请修改以在逗号之间包含引号:
# List of three strings
individual_words = ["Consult", "change", "Wait"]
for word in individual_words:
print(stemmer.stem(word))
print("----")
处理单词开头的大写与小写需要传递一个参数,但如果您尝试处理专有名词(例如区分词干 change
和名称 Chang
).
# Stem but do not convert first character to lowercase
for word in individual_words:
print(stemmer.stem(word, to_lowercase=False))
全部三个时的预期输出 运行:
consult, change, wait
----
consult
chang
wait
----
Consult
chang
Wait
train_data = ["Consultant, changing, Waiting"]
我正在尝试使用以下代码将词干分析器应用于数据,但它保留了原始数据:
stemmer = stem.porter.PorterStemmer()
train_data = train_stemmer
for i in range(len(train_stemmer)):
train_stemmer[i] = stemmer.stem(train_stemmer[i])
代码运行良好,但没有产生我预期的结果,即:
["Consult, change, Wait"]
有两件事跳出来了:
train_data
在你的问题中是一个包含一个字符串["Consult, change, Wait"]
的列表,而不是一个包含三个字符串的列表["Consult", "change", "Wait"]
- 词干自动转换为小写
如果您希望列表包含一个字符串,这应该可以正常工作:
from nltk.stem import porter
stemmer = porter.PorterStemmer()
# List of one string
string_in_list = ["Consult, change, Wait"]
for word in string_in_list:
print(stemmer.stem(word))
print("----")
如果您想要一个包含三个字符串的列表,请修改以在逗号之间包含引号:
# List of three strings
individual_words = ["Consult", "change", "Wait"]
for word in individual_words:
print(stemmer.stem(word))
print("----")
处理单词开头的大写与小写需要传递一个参数,但如果您尝试处理专有名词(例如区分词干 change
和名称 Chang
).
# Stem but do not convert first character to lowercase
for word in individual_words:
print(stemmer.stem(word, to_lowercase=False))
全部三个时的预期输出 运行:
consult, change, wait
----
consult
chang
wait
----
Consult
chang
Wait