0
正規表現を通して、与えられたセンテンスのレキシコンに対応する極性タグを付けることにしました。re.sub複数のリストを対応するマッチで置き換える(Python)
import re
vocab = ['good/POSI','bad/NEAG','strong/POSI','dirty/NEGA', 'never/SWIT']
sent = ["It is really good", "strong man never gets his body dirty"]
for token in vocab:
word = re.sub(r'(\\w+)\\/[A-Z]+_[A-Z]+','\\1', token)
TA = re.sub(str(word),str(token), str(sent))
print(TA)
私はこのような結果を得ようとしました。
["It is really good/POSI", "strong/POSI man never/SWIT gets his body dirty/NEGA"]
残念ながら、私はできませんでしたが、どの回線に問題があるかわかりません。 注釈のためのより良い方法はありますか?
>>> vocab = {v[:v.find('/')]: v for v in vocab}
>>> vocab
{'dirty': 'dirty/NEGA', 'good': 'good/POSI', 'never': 'never/SWIT', 'bad': 'bad/NEAG', 'strong': 'strong/POSI'}
この方法であなたは辞書内の値で\w+
の交換を行うことができます:
kを '' never/SWIT''に置き換えます。これは、内側のループの繰り返しごとに変更されていない 'line'で始めるからです。 – dhke