无法通过文本替换spaCy修饰词代词(-PRON-)

时间:2019-11-27 19:51:39

标签: spacy lemmatization

我正在尝试使用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-'

1 个答案:

答案 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 ?