python - 如何从词干中排除某些名称和术语(Python NLTK SnowballStemmer (Porter2))
问题描述
我刚开始接触 NLP、Python 并同时在 Stackoverflow 上发帖,所以如果我看起来很无知,请耐心等待 :)。
我在 Python 的 NLTK 中使用 SnowballStemmer 来提取词干以进行文本分析。虽然词形还原似乎低估了我的标记,但我阅读的雪球 porter2 词干分析器比基本的搬运工词干分析器更受欢迎,但它却超过了我的标记。我正在分析推文,其中包括许多名字,可能还有地点和其他不应该被阻止的词,例如:希拉里、汉尼提、总统,现在被简化为希拉里、汉尼提和总统(你可能已经猜到我正在分析谁的推文) .
有没有一种简单的方法可以从词干中排除某些术语?相反,我也可以仅对标记进行词形还原,并包含一个用于常见后缀的规则,例如 -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吗?这意味着命名实体识别。您可以预处理文本并找到所有命名实体,然后将其从词干中排除。词干提取后,您可以再次合并数据。
推荐阅读
- php - 将 mysqli 转换为 PDO 的问题 | PHP mySQL
- node.js - 如何使用 Mocha 测试 Promise?获取“参考错误:
不是函数” - java - 如何从 Firebase RecycleView 中删除项目而不从数据库中删除?
- java - Keycloak-Admin-Client : java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
- python - 无法保存经过训练的网络:“KeyError: 'predictions_ib-0'”
- django - 将 social_django 添加到 wagtail 的问题
- node.js - Puppeteer-cluster 使用选项卡并截图
- node.js - 我应该在控制器和域服务之间放置命令总线吗?
- r - POSIXct 对象和时区
- php - 如何在 NetBeans 11.0 中生成 getter 和 setter