spaCy管道组件,用于为Doc、Token和Span对象添加emoji元数据
项目描述
spacymoji: spaCy的emoji
spaCy 扩展和管道组件,用于向 Doc
对象添加emoji元数据。检测由一个或多个Unicode字符组成的emoji,并可选择将多字符emoji(组合图片、带肤色修饰符的emoji)合并成一个token。将可读的emoji描述添加为自定义属性,并提供可选的查找表以供您自己的描述使用。扩展设置自定义 Doc
、Token
和 Span
属性 ._.is_emoji
、._.emoji_desc
、._.has_emoji
和 ._.emoji
。您可以在这里了解更多关于自定义管道组件和扩展属性的信息。
使用spaCy的 PhraseMatcher
匹配emoji,并在emoji
包提供的数据表中查找。
⏳ 安装
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,这甚至可能会提高解析器的准确度。
可用属性
该扩展会在 Doc
、Span
和 Token
上设置属性。您可以通过在 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]] |
|
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
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。