跳转到主要内容

spaCy管道组件,用于为Doc、Token和Span对象添加emoji元数据

项目描述

spacymoji: spaCy的emoji

spaCy 扩展和管道组件,用于向 Doc 对象添加emoji元数据。检测由一个或多个Unicode字符组成的emoji,并可选择将多字符emoji(组合图片、带肤色修饰符的emoji)合并成一个token。将可读的emoji描述添加为自定义属性,并提供可选的查找表以供您自己的描述使用。扩展设置自定义 DocTokenSpan 属性 ._.is_emoji._.emoji_desc._.has_emoji._.emoji。您可以在这里了解更多关于自定义管道组件和扩展属性的信息。

使用spaCy的 PhraseMatcher 匹配emoji,并在emoji提供的数据表中查找。

tests Current Release Version pypi Version

⏳ 安装

spacymoji 需要安装 spacy 版本 3.0.0 或更高。对于 spaCy v2.x 版本,请安装 spacymoji==2.0.0

pip install spacymoji

👆 使用方法

导入组件,并使用组件工厂的字符串名 "emoji" 将其添加到您的 pipeline 中的任何位置。

import spacy

nlp = spacy.load("en_core_web_sm")
nlp.add_pipe("emoji", first=True)
doc = nlp("This is a test 😻 👍🏿")
assert doc._.has_emoji is True
assert doc[2:5]._.has_emoji is True
assert doc[0]._.is_emoji is False
assert doc[4]._.is_emoji is True
assert doc[5]._.emoji_desc == "thumbs up dark skin tone"
assert len(doc._.emoji) == 2
assert doc._.emoji[1] == ("👍🏿", 5, "thumbs up dark skin tone")

spacymoji 只关注标记文本,因此您可以在一个空的 Language 实例上使用它(它应该适用于所有 可用的语言!),或者在一个已加载的 pipeline 中使用它。如果您的 pipeline 包含词性标注器、解析器和实体识别器,请确保将 emoji 组件作为 first=True 添加,以便在分词之后立即合并 spans,并且在文档解析之前。如果您的文本中包含大量 emoji,这甚至可能会提高解析器的准确度。

可用属性

该扩展会在 DocSpanToken 上设置属性。您可以通过在 nlp.add_pipe(...) 方法中的 config 参数中传递它们来更改属性名称(以及 Emoji 组件的其他参数)。有关自定义组件和属性的更多详细信息,请参阅处理管道文档

属性 类型 描述
Token._.is_emoji bool 标记是否为 emoji。
Token._.emoji_desc str emoji 的人类可读描述。
Doc._.has_emoji bool bool
文档是否包含 emoji。 Doc._.emoji List[Tuple[str, int, str]]
(emoji, index, description) 的文档 emoji 元组。 Span._.has_emoji bool
span 是否包含 emoji。 Doc._.emoji Span._.emoji

(emoji, index, description) 的 span emoji 元组。

设置

设置 类型 描述
attrs Tuple[str, str, str, str] 要在 ._ 属性上设置的属性。默认为 ('has_emoji', 'is_emoji', 'emoji_desc', 'emoji')
pattern_id str 匹配模式 ID,默认为 'EMOJI'。可以更改以避免 ID 冲突。
merge_spans bool Merge spans containing multi-character emoji,默认为 True。将仅合并结果为一个图标,而不是序列的复合 emoji。
lookup Dict[str, str] 可选的查找表,将 emoji 字符串映射到自定义描述,例如翻译或其他注释。
emoji_config = {"attrs": ("has_e", "is_e", "e_desc", "e"), lookup={"👨‍🎤": "David Bowie"})
nlp.add_pipe(emoji, first=True, config=emoji_config)
doc = nlp("We can be 👨‍🎤 heroes")
assert doc[3]._.is_e
assert doc[3]._.e_desc == "David Bowie"

如果您正在训练一个 pipeline,您可以在您的 config.cfg 中定义组件配置。

[nlp]
pipeline = ["emoji", "ner"]
# ...

[components.emoji]
factory = "emoji"
merge_spans = false

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。

源分布

spacymoji-3.1.0.tar.gz (9.0 kB 查看散列)

上传时间

构建分布

spacymoji-3.1.0-py2.py3-none-any.whl (8.5 kB 查看散列)

上传时间 Python 2 Python 3

由以下支持