我有一个单词、名词动词短语列表,我想要:
下面的 MWE 涉及突出显示匹配的单词并使用置换来显示它们。我提到了我的其余任务只是为了提供背景信息。输出不会使用自定义颜色对自定义实体进行着色。
import spacy
from spacy.matcher import PhraseMatcher
from spacy.tokens import Span
good = ['bacon', 'chicken', 'lamb','hot dog']
bad = [ 'apple', 'carrot']
nlp = spacy.load('en_core_web_sm')
patterns1 = [nlp(good) for good in good]
patterns2 = [nlp(bad) for bad in bad]
matcher = PhraseMatcher(nlp.vocab)
matcher.add('good', None, *patterns1)
matcher.add('bad', None, *patterns2)
doc = nlp("I like bacon and chicken but unfortunately I only had an apple and a carrot in the fridge")
matches = matcher(doc)
for match_id, start, end in matches:
span = Span(doc, start, end, label=match_id)
doc.ents = list(doc.ents) + [span] # add span to doc.ents
print([(ent.text, ent.label_) for ent in doc.ents])
Run Code Online (Sandbox Code Playgroud)
上面的代码产生以下输出:
[('bacon', 'good'), ('chicken', 'good'), ('apple', 'bad'), ('carrot', 'bad')]
Run Code Online (Sandbox Code Playgroud)
但是当我尝试自定义实体颜色时,它似乎不起作用。
from spacy import displacy
colors = {'good': "#85C1E9", "bad": "#ff6961"}
options = {"ents": ['good', 'bad'], "colors": colors}
displacy.serve(doc, style='ent',options=options)
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
我只是复制/粘贴您的代码,它在这里工作正常。我正在使用 spaCy v3.1.1。
HTML 输出源是什么样的?
我能够在 spaCy 2.3.5 上重现您的问题。我可以通过将标签设置为大写(好和坏)来修复它。我找不到与此相关的错误,但由于模型通常只使用大写标签,我猜这是旧版本的问题。
| 归档时间: |
|
| 查看次数: |
3504 次 |
| 最近记录: |