基于方面的情感分析(ABSA):如何筛选双词名词短语
嘿,刚好在ABSA项目里处理过类似的筛选需求,给你分享个简单直接的实现方法~
首先看你的代码,注意下导入应该是from textblob import TextBlob(你写的Word应该是笔误啦)。当你用comments.noun_phrases提取到所有名词短语后,只需要遍历这个列表,筛选出单词数恰好为2的短语就行,核心是用split()分割短语后判断长度。
完整的代码片段如下:
# 修正导入(关键:要导入TextBlob而非Word) from textblob import TextBlob # 假设你的corpus是已经完成文本清洗的语料列表 corpus = ["Great battery life on this phone", "Camera quality is disappointing", "Love the screen resolution"] # 构建TextBlob对象并提取所有名词短语 combined_text = ' '.join(corpus) comments = TextBlob(combined_text) all_noun_phrases = comments.noun_phrases # 筛选仅包含两个单词的方面词 two_word_aspects = [phrase for phrase in all_noun_phrases if len(phrase.split()) == 2] # 输出结果看看 print(two_word_aspects) # 输出:['battery life', 'camera quality', 'screen resolution']
补充小技巧:
- 如果你的语料里有重复的方面词,想要去重的话,可以把结果转成集合再转列表:
two_word_aspects_unique = list(set(two_word_aspects)) - 要是遇到带连字符的短语(比如
user-friendly interface),split()不会拆分连字符部分,所以会被当成一个单词,符合你“两个单词”的筛选逻辑;如果需要拆分这类情况,可以额外处理连字符,但一般ABSA里这类复合词算单个方面元素,不用拆分。
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

