保留专有名词和大写单词,同时使用词干

2024-10-16 22:24:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设计一个文本处理程序,需要在以后进行探索性分析词干。我的一个过程是词干,我必须使用波特词干。你知道吗

我设计了一个数据帧结构来存储我的数据。此外,我还设计了一个应用于数据帧的函数。当我把这个函数应用到DataFrame时,词干可以工作,但它不会保留大写(或专有名词)单词。你知道吗

我的代码片段:

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']

任何建议都将不胜感激!你知道吗


Tags: 数据函数body单词wordfile大写stem
1条回答
网友
1楼 · 发布于 2024-10-16 22:24:43

首先:您应该将结果分配给word

word = stemmer.stem(word).capitalize()

第二:word.title()不检查单词是否大写,但它会创建大写单词,所以您应该检查

if word == word.title():

最终

if word[0].isupper() and word[1:].islower():

def stemming(word):
    stemmer = PorterStemmer()
    word = str(word)
    if word == word.title():
        word = stemmer.stem(word).capitalize()
    elif word.isupper():
        word = stemmer.stem(word).upper()
    else:
        word = stemmer.stem(word)
    return word

相关问题 更多 >