首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >porter-stemmer: python中的词干不起作用。

porter-stemmer: python中的词干不起作用。
EN

Stack Overflow用户
提问于 2021-04-12 21:59:59
回答 1查看 566关注 0票数 1
代码语言:javascript
复制
  train_data = ["Consultant, changing,  Waiting"]

我试图用下面的代码将词干分析器应用于数据,但它保留了原始数据:

代码语言:javascript
复制
 stemmer = stem.porter.PorterStemmer()
    
     train_data = train_stemmer
        
    for i in range(len(train_stemmer)):
        train_stemmer[i] = stemmer.stem(train_stemmer[i])

代码运行良好,但没有产生预期的结果,即:

代码语言:javascript
复制
["Consult, change, Wait"]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-12 22:21:43

有两件事可以跳出来:

问题中的

  1. train_data是包含一个字符串["Consult, change, Wait"]的列表,而不是由三个字符串["Consult", "change", "Wait"]
  2. Stemming转换成小写的

列表。

如果您想让列表包含一个字符串,这应该很好:

代码语言:javascript
复制
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("----")

如果您想要一个包含三个字符串的列表,那么修改以包括逗号之间的引号:

代码语言:javascript
复制
# List of three strings
individual_words = ["Consult", "change", "Wait"]
for word in individual_words:
    print(stemmer.stem(word))
print("----")

在单词开头处理大小写需要传递一个参数,但如果要处理专有名词(例如,区分词干change和名称Chang),则可能有意义。

代码语言:javascript
复制
# Stem but do not convert first character to lowercase
for word in individual_words:
    print(stemmer.stem(word, to_lowercase=False))

所有三个运行时的预期输出:

代码语言:javascript
复制
consult, change, wait
----
consult
chang
wait
----
Consult
chang
Wait
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67066233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档