我正在尝试使用spaCy对文本进行词法化。由于spaCy使用-PRON-作为人称代词的引理,因此在所有情况下我都希望保留原始文本。
这是我代码的相关部分:
...
fout = open('test.txt', 'w+')
doc = nlp(text)
for word in doc:
if word.lemma_ == "-PRON-":
write = word.text
print(write)
else:
write = word.lemma_
fout.write(str(write))
fout.write(" ")
...
对于spaCy为引理'-PRON-'的情况,print语句确实会打印原始单词。
但是,对于这些情况,我的输出文件(test.txt)始终包含“ -PRON-”,即使我希望它为这些情况(例如我,我们等)写原始文字
我想念什么?
我尝试了不同的版本,包括使用pos_标记来识别代词等,但是总是得到相同的结果,即我的输出包含'-PRON-'
答案 0 :(得分:0)
请尝试一下这段经过一些改动的代码,以查看您得到的内容...
import spacy
nlp = spacy.load('en_core_web_sm')
text = 'Did he write the code for her?'
doc = nlp(text)
out_sent = [w.lemma_ if w.lemma_ !='-PRON-' else w.text for w in doc]
out_sent = ' '.join(out_sent)
print(out_sent)
with open('out_sent.txt', 'w') as f:
f.write(out_sent + '\n')
这应该产生...
do he write the code for her ?