python - 如何从词干提取中排除某些名称和术语 (Python NLTK SnowballStemmer (Porter2))

标签 python nlp nltk stemming lemmatization

我刚刚接触 NLP、Python,同时也在 Stackoverflow 上发帖,所以如果我看起来很无知,请耐心等待:)。

我在 Python 的 NLTK 中使用 SnowballStemmer 来提取词干以进行文本分析。虽然词形还原似乎低估了我的标记,但我读到的 Snowball porter2 词干分析器大多优于基本的 porter 词干分析器,超过了我的标记。我正在分析的推文包括许多名字,可能还有地点和其他不应该被词干的单词,例如:希拉里、汉尼蒂、总统,现在被简化为希拉里、汉尼蒂和总统(你可能已经猜到我正在分析谁的推文) 。

是否有一种简单的方法可以从词干中排除某些术语?相反,我也可以仅对标记进行词形还原,并包含常见后缀(例如 -ed、-s、...)的规则。另一个想法可能是仅对动词和形容词以及以 s 结尾的名词进行词干处理。这可能也足够接近了……

我现在正在使用以下代码:

# LEMMATIZE AND STEM WORDS

from nltk.stem.snowball import EnglishStemmer

lemmatizer = nltk.stem.WordNetLemmatizer()
snowball = EnglishStemmer() 

def lemmatize_text(text):

    return [lemmatizer.lemmatize(w) for w in text]

def snowball_stemmer(text):

    return [snowball.stem(w) for w in text]

# APPLY FUNCTIONS

tweets['text_snowball'] = tweets.text_processed.apply(snowball_stemmer)
tweets['text_lemma'] = tweets.text_processed.apply(lemmatize_text)

我希望有人可以提供帮助...与我过去处理各种问题的经验相反,到目前为止我还无法在网上找到针对我的问题的足够帮助。

谢谢!

最佳答案

你知道NER吗?它意味着命名实体识别。您可以预处理文本并找到所有命名实体,然后将其从词干中排除。词干提取后,您可以再次合并数据。

关于python - 如何从词干提取中排除某些名称和术语 (Python NLTK SnowballStemmer (Porter2)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59266675/

相关文章:

python - 将 GPU 与 python 包 bert_embeddings 和 mxnet 一起使用失败

python - 使用什么 NLP 工具来匹配具有相似含义或语义的短语

python - 通过ansible playbook在python终端中运行命令

python - 如何向 NLTK 中的停用词添加更多语言?

python - 下载NLTK数据时出现PermissionError

python - 类似 Siri 的应用程序 : calculating similarities between a query and a predefined set of control phrases

python - 如何在 Python 中获取 numpy 数组周边的值?

Python、py.test 和 stderr——从 Cement 日志扩展中捕获日志处理程序输出

javascript - python 通过 POST 使用 javascript 提交发送数据

java - NLP-命名实体识别