tokenize - 如何在 Spacy 中用连字符标记单词
问题描述
我想使用 spacy 将 bs-it 标记为 ["bs","it"],因为我将它与 rasa 一起使用。我得到的输出是[“bs-it”]。有人可以帮我吗?
解决方案
您可以将自定义规则添加到 spaCy 的标记器。spaCy 的分词器将连字符的单词视为单个token
. 为了改变这一点,您可以添加自定义标记化规则。在你的情况下,你想标记一个infix
ie 出现在两个单词之间的东西,这些通常是连字符或下划线。
import re
import spacy
from spacy.tokenizer import Tokenizer
infix_re = re.compile(r'[-]')
def custom_tokenizer(nlp):
return Tokenizer(nlp.vocab,infix_finditer=infix_re.finditer)
nlp = spacy.load("en_core_web_sm")
nlp.tokenizer = custom_tokenizer(nlp)
doc = nlp("bs-it")
print([t.text for t in doc])
输出
['bs', '-', 'it']
推荐阅读
- javascript - 如何从 HTML 中的外部文件链接 JS
- jquery - 如何在 jquery 中获取 data-id 值
- c++ - 如何使用 std::enable_if_t 进行完美转发?
- android - 将具有较少字段的新 POJO 类映射到现有 Room 表
- discord.py - Discord python:如何获得可以访问和/或写入通道的所有角色?
- python - 将视图连接到 Django 中的我的模型
- reactjs - 将金额从按钮向下传递到“支付”组件
- docker - docker: jwilder/nginx-proxy 后面的 seafile
- java - 与高斯模糊内核的卷积有效,其他内核无效
- java - 如何比较 Java 中 switch 语句中的 int 变量?