Jam*_* Ko 3 python nlp emoji spacy
是否有可能来标记像表情符号:),:(,;~(正确使用spaCy Python库?例如,如果我运行以下代码:
import spacy
nlp = spacy.load('en')
doc = nlp("Hello bright world :)")
Run Code Online (Sandbox Code Playgroud)
然后使用displaCy可视化doc :
它错误地解析world :)为一个标记.如何修改spaCy以便识别这些附加符号?谢谢.
编辑:找到以下内容:https://github.com/ines/spacymoji但我认为它只支持像✨这样的Unicode表情符号,而不支持ASCII表情符号:)?
是的,spaCy实际上包含了一个非常全面的基于文本的表情符号列表,作为其tokenizer异常的一部分.因此,使用上面的示例并打印单个标记,可以正确标记表情符号:
doc = nlp("Hello bright world :)")
print([token.text for token in doc])
# ['Hello', 'bright', 'world', ':)']
Run Code Online (Sandbox Code Playgroud)
我想这里发生的事情是你实际上遇到了一个有趣的(可能是非理想的)边缘情况和displacy默认情况.为避免标点符号的长依赖性弧,collapse_punct设置默认为True.这意味着在呈现可视化时,标点符号将合并到前一个标记上.通过检查令牌的is_punct属性是否返回来识别标点符号True- 这也恰好是":)"的情况.
在您的示例中,您可以通过设置collapse_punct为False传递给的选项来解决此问题displacy.serve:
displacy.serve(doc, style='dep', options={'collapse_punct': False})
Run Code Online (Sandbox Code Playgroud)
(在合并标点符号时,displaCy可视化工具可能应该包括表情符号的例外.这当前很难,因为spaCy没有is_emoji或is_symbol标志.但是,它可能是一个很好的添加 - 你可以在这个帖子上投票.)
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |