【问题标题】:porter-stemmer: Stemming in python is not workingporter-stemmer:python 中的词干提取不起作用
【发布时间】:2021-07-07 23:56:36
【问题描述】:
  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"]

【问题讨论】:

  • 你的代码的输出是什么?

标签: python stemming porter-stemmer


【解决方案1】:

有两件事跳出来:

  1. 您的问题中的train_data 是一个包含一个字符串["Consult, change, Wait"] 的列表,而不是一个包含三个字符串["Consult", "change", "Wait"] 的列表
  2. 词干自动转换为小写

如果您希望列表包含一个字符串,这应该可以正常工作:

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

【讨论】:

    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多