亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python 中進行基于方面的情感分析時需要有關否定處理的建議

在 Python 中進行基于方面的情感分析時需要有關否定處理的建議

精慕HU 2024-01-24 20:47:33
我正在嘗試編寫一個 Python 代碼,使用依賴解析器對產品評論進行基于方面的情感分析。我創建了一個示例評論:“音質很好,但電池壽命很差?!陛敵鰹椋篬['soundquality', ['great']], ['batterylife', ['bad']]]我可以正確地得到這句話的方面和形容詞,但是當我將文本更改為:“音質不是很好,但電池壽命還不錯。”輸出仍然保持不變。如何向我的代碼添加否定處理?有什么方法可以改善我目前所擁有的嗎?
查看完整描述

1 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

您不妨嘗試一下spacy。以下模式將捕獲:

  • 名詞短語

  • 后跟isare

  • 可選地跟隨not

  • 后面跟著一個形容詞

import spacy

from spacy.matcher import Matcher

nlp = spacy.load('en_core_web_sm')


output = []

doc = nlp('The product is very good')

matcher = Matcher(nlp.vocab)

matcher.add("mood",None,[{"LOWER":{"IN":["is","are"]}},{"LOWER":{"IN":["no","not"]},"OP":"?"},{"LOWER":"very","OP":"?"},{"POS":"ADJ"}])

for nc in doc.noun_chunks:

    d = doc[nc.root.right_edge.i+1:nc.root.right_edge.i+1+3]

    matches = matcher(d)

    if matches:

        _, start, end = matches[0]

        output.append((nc.text, d[start+1:end].text))

    

print(output)

[('The product', 'very good')]

或者,您可以使用依賴解析器中的信息來擴展匹配模式,這將添加形容詞短語的定義:


output = []

matcher = Matcher(nlp.vocab, validate=True)

matcher.add("mood",None,[{"LOWER":{"IN":["is","are"]}},{"LOWER":{"IN":["no","not"]},"OP":"?"},{"DEP":"advmod","OP":"?"},{"DEP":"acomp"}])

for nc in doc.noun_chunks:

    d = doc[nc.root.right_edge.i+1:nc.root.right_edge.i+1+3]

    matches = matcher(d)

    if matches:

        _, start, end = matches[0]

        output.append((nc.text, d[start+1:end].text))

    

print(output)

[('The product', 'very good')]


查看完整回答
反對 回復 2024-01-24
  • 1 回答
  • 0 關注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號