ZEW*_*CHU 7 nlp python-3.x spacy
我正在解析Spacy的句子,如下所示:
import spacy
nlp = spacy.load("en")
span = nlp("This is some text.")
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以删除跨度中的单词,同时仍然保持其余单词的格式像句子一样。如
del span[3]
Run Code Online (Sandbox Code Playgroud)
这可能会产生一个句子
这是一些。
如果没有SpaCy的其他一些方法也可以达到相同的效果,那也很好。
有一个解决方法。
这个想法是您从文档创建一个numpy数组,删除不需要的条目,然后从新的numpy数组创建一个文档。
import spacy
from spacy.attrs import LOWER, POS, ENT_TYPE, IS_ALPHA
from spacy.tokens import Doc
import numpy
def remove_span(doc, index):
np_array = doc.to_array([LOWER, POS, ENT_TYPE, IS_ALPHA])
np_array_2 = numpy.delete(np_array, (index), axis = 0)
doc2 = Doc(doc.vocab, words=[t.text for i, t in enumerate(doc) if i!=index])
doc2.from_array([LOWER, POS, ENT_TYPE, IS_ALPHA], np_array_2)
return doc2
# load english model
nlp = spacy.load('en')
doc = nlp("This is some text")
new_doc = remove_span(doc, 3)
print(new_doc)
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
归档时间: |
|
查看次数: |
1106 次 |
最近记录: |