非常に特有の問題があります。 extract
関数は、XMLファイルを受け取り、レストランのレビューをキーとして使用して辞書を生成します。ここでは、テキストをトークン化し、句読点が削除され、辞書に再挿入される前に「トークン化されていません」というように、テキストに基本的な前処理を行っています。なぜ辞書処理キーを失う前処理ですか?
import string
from nltk.tokenize import word_tokenize, RegexpTokenizer
tokenizer = RegexpTokenizer(r'\w+')
def preprocess(file):
d = extract(file)
for text in list(d.keys()):
tokenized_text = tokenizer.tokenize(text)
text2 = ''.join([" "+i if not i.startswith("'") and i not in string.punctuation else i for i in tokenized_text]).strip()
d[text2] = d.pop(text)
return d
675件のレビューのうち、この機能を実行すると2件が見つかりませんでした。これらは「素晴らしいサービス」です。と「おいしい」。私は完全な停止が最初から取り除かれるべきであることを除いて、それらがそのまま返されることを期待するでしょう。参考のため
、extract
機能:
from collections import OrderedDict, defaultdict
import xml.etree.ElementTree as ET
def extract(file):
tree = ET.parse(file)
root = tree.getroot()
if file == 'EN_REST_SB1_TEST.xml':
d = OrderedDict()
for sentence in root.findall('.//sentence'):
opinion = sentence.findall('.//Opinion')
if opinion == []:
text = sentence.find('text').text
d[text] = 0
return d
誰もがSemEval ABSA作業に精通している場合、あなたは私がいないIDタグを利用して、多少遠回りでこれをやった注意しましょうXMLで私はそれをやった方法に固執することを好むだろう。
あなたはレビューをキーとして使用しています。これは、重複を失うことを意味します。これらの*非常に*短いレビューが2回起こったことがありますか? – alexis
はい - それです。非常に明白な今私はそれを考える。何が最良の選択肢でしょうか? – user3058703
自分の目標に合うようにあなたのアプローチを修正する。私はちょうどリストでそれらを収集するだろうが、私はあなたが達成しようとしているもの、なぜあなたがキーとして値を使用しているのか、または重複が失われることを気にする理由を知らないので、たぶん**新しい質問をお願いします** **仕事を説明し、正しいデータ構造を尋ねますか? – alexis