【发布时间】:2019-09-13 12:41:06
【问题描述】:
我正在设计一个文本处理程序,需要对单词进行词干分析,以便以后进行探索性分析。我的流程之一是词干,我必须使用 Porter Stemmer。
我设计了一个 DataFrame 结构来存储我的数据。此外,我还设计了一个应用于 DataFrame 的函数。当我将该函数应用于 DataFrame 时,词干可以工作,但它不会保留大写(或专有名词)单词。
我的代码的 sn-p:
from nltk.stem.porter import PorterStemmer
def stemming(word):
stemmer = PorterStemmer()
word = str(word)
if word.title():
stemmer.stem(word).capitalize()
elif word.isupper():
stemmer.stem(word).upper()
else:
stemmer.stem(word)
return word
dfBody['body'] = dfBody['body'].apply(lambda x: [stemming(y) for y in x])
这是我没有大写单词的结果: output
数据集样本(我的数据集很大):
file body
PP3169 ['performing', 'Maker', 'USA', 'computer', 'Conference', 'NIPS']
预期输出(应用词干函数后):
file body
PP3169 ['perform', 'Make', 'USA', 'comput', 'Confer', 'NIPS']
任何建议将不胜感激!
【问题讨论】:
-
您能否分享数据框中的几行作为一个小示例/测试数据,以便我们对其进行测试?谢谢。
-
不应该和
word =一起使用——即。word = stemmer.stem(word).capitalize() -
@furas 将每个单词的第一个字母变为大写 :S
-
你能举一个你期望的输入和相应输出的例子吗,当你说大写(或专有名词)时,这可能是两种不同的情况
-
word.title()将文本转换为标题。您必须比较if word == word.title():,或查看if word[0].isupper() and word[1:].islower()
标签: python nlp porter-stemmer