快速且可定制的分词器
项目描述
## 托克
[](https://pypi.python.org/pypi/tok/ ) []( https://pypi.python.org/pypi/tok/ )
Python 中快速且最完整/可自定义的分词器。
它比 spacy 和 nltk 基于正则表达式的标记器快大约 25 倍。
使用 aho-corasick 算法使其成为一种新颖性,并使其在分裂方式上既可解释又快速。
繁重的工作是由 [textsearch]( https://github.com/kootenpv/textsearch ) 和 [pyahocorasick]( https://github.com/WojciechMula/pyahocorasick ) 完成的,只允许编写大约 200 行的代码。
与基于正则表达式的方法相反,它只会遍历文本中的每个字符一次。阅读 [下文](#how-it-works) 了解其工作原理。
### 安装
点安装tok
### 用法
默认情况下,它处理缩写、http、(浮动)数字和货币。
`python from tok import word_tokenize word_tokenize("我不会那样做......你会吗?") ['I', 'would', 'not', 'do', 'that', '...' , '会', '你', '?'] `
或者自己配置:
`python from tok import Tokenizer tokenizer = Tokenizer(protected_words=["some.thing"]) # 仍然使用默认设置tokenizer.word_tokenize("I want to protect some.thing") ['I', 'want', 'to ','保护','some.thing'] `
按句子分割:
`python from tok import sent_tokenize sent_tokenize("我不会那样做......你会吗?") [['我', '会','不','做','那个','...... '], ['会', '你', '?']] `
有关更多选项,请查看Tokenizer的文档。
### 进一步定制
鉴于:
`python from tok import Tokenizer t = Tokenizer(protected_words=["some.thing"]) # 仍然使用默认值`
您可以使用以下方法将自己的想法添加到标记器中:
t.keep(x, reason):只要找到 x,就不会添加空格。防止直接标记化。
t.split(x, reason):每当它找到 x 时,它将用空格将其包围,从而创建一个标记。
t.drop(x, reason):每当它找到 x 时,它将删除它但添加一个拆分。
t.strip(x, reason) : 每当它找到 x 时,它会删除它而不进行拆分。
`python t.drop("bla", "bla 不需要") t.word_tokenize("请删除 bla,谢谢") ['请','删除',',', '谢谢','你' ]`
### 可以解释
解释发生了什么:
`python t.explain("bla") [{'from': 'bla', 'to': '', 'explanation': 'bla is not required '}] `
查看其中的所有内容(将帮助您了解其工作原理):
`python t.explain_dict`
### 这个怎么运作
它总是只保留最长的匹配。通过在您的令牌中引入一个空格,它将使其被拆分。
如果您考虑如何将. 作品,见这里:
当它找到一个 `A.` 时,它会变成 `A.`(单字母缩写)
当它找到.0时,它会变成.0(数字)
当它找到一个. ,它会成功的`。` (因此进行拆分)
如果你想确保包括点在内的东西保持不变,你可以使用例如:
t.keep(“酷”)
### 贡献
如果您想为这个库做出贡献,我们将不胜感激。
为其他语言添加 [contractions]( https://github.com/kootenpv/contractions )也很棒。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。