【问题标题】:Cannot replace spaCy lemmatized pronouns (-PRON-) through text无法通过文本替换 spaCy 词形化代词 (-PRON-)
【发布时间】:2019-11-27 19:51:39
【问题描述】:

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

【问题讨论】:

  • 上面的代码对我有用。它正确地对所有单词进行词形还原,但不影响代词。你确定你的例子在你的机器上失败了吗?什么版本的斯派西?什么版本的 Python?
  • 非常感谢您的检查。我有 spaCy 2.2.2 版,Python 3.7.4 版。
  • 我今天早上再次运行它,它仍然在输出文件中生成“-PRON-”,即使它正确识别了它应该生成文本的所有实例。不知道发生了什么。

标签: spacy lemmatization


【解决方案1】:

试试这个经过修改的代码,看看你会得到什么......

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 ?

【讨论】:

    猜你喜欢
    • 2018-08-26
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    相关资源
    最近更新 更多