まず第一に、私はPythonに不慣れです。私がやろうとしているのは、CSVからデータをレンマ化することです。パンダを使用してcsvを読み取りました。しかし、これを実行しているときに、lemmatized.append(temp)という行でエラーが発生します。言っているNameErrorを:名「TEMP」に定義されていない私は、このエラーの原因を把握することはできません。私はPython2.7を使用しています。Pythonの専門家の誰かがこの単純な問題について私を助けてくれて、それによって私が学習するのを手伝ってくれるなら、私は感謝するでしょう。
data = pd.read_csv('TrainingSETNEGATIVE.csv')
list = data['text'].values
def get_pos_tag(tag):
if tag.startswith('V'):
return 'v'
elif tag.startswith('N'):
return 'n'
elif tag.startswith('J'):
return 'a'
elif tag.startswith('R'):
return 'r'
else:
return 'n'
lemmatizer = WordNetLemmatizer()
with open('new_file.csv', 'w+', newline='') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
for doc in list:
tok_doc = nltk.word_tokenize(doc)
pos_tag_doc = nltk.pos_tag(tok_doc)
lemmatized = []
for i in range(len(tok_doc)):
tag = get_pos_tag(pos_tag_doc[i][1])
if tag == 'r':
if tok_doc[i].endswith('ly'):
temp = tok_doc[i].replace("ly", "")
else:
temp = lemmatizer.lemmatize(tok_doc[i], pos=tag)
lemmatized.append(temp)
lemmatized = " ".join(lemmatized)
wr.writerow([lemmatized])
print(lemmatized)
例外はそれをすべて言います:「名前 'temp'は定義されていません」。したがって、変数temp
は使用される前に定義されません。
あなたのコードの問題はここにあります:
if tag == 'r':
if tok_doc[i].endswith('ly'):
temp = tok_doc[i].replace("ly", "")
# else: temp = None
else:
temp = lemmatizer.lemmatize(tok_doc[i], pos=tag)
lemmatized.append(temp)
IFがtag == 'r'
真であるとtok_doc[i].endswith('ly')
されていませんTrue
その後、temp
定義されることは決してありません。
else
私が挿入してコメントアウトしたような句を追加することを検討してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加