NLTK(自然语言处理工具包)可以说是五花八门,但是,用户wu.zheng开源的这个使用双向LSTM构建的中文处理工具包FoolNLTK,不仅可以实现分词、词性标注和命名实体识别,同时还能使用用户自定义字典加强分词的效果。该工具包Github官方地址,不过,最近的一次维护已经是一年前了。该工具包有Java版本,Pyhton版本后端使用TensorFlow。
上述所说的BiLSTM可以参考这篇论文。
pip install foolnltk
安装默认下载模型。
import fool
def cut_words():
text = "一个傻子在北京"
print(fool.cut(text))
也可以使用命令行对文件进行分词
python -m fool [filename]
可指定-b参数,每次切割的行数,能加快分词速度
词典每一行格式如下,词的权重越高,词的长度越长就越越可能出现, 权重值请大于1
词语名称 权重值(建议整数且大于1)
加载词典并使用,示例如下。
def user_dict():
import fool
fool.load_userdict('myDict.txt')
text = ["我在北京天安门看你难受香菇", "我在北京晒太阳你在非洲看雪"]
print(fool.cut(text))
删除字典
fool.delete_userdict()
def cixinbiaozhu():
import fool
text = ["一个傻子在北京"]
print(fool.pos_cut(text))
import fool
text = ["一个傻子在北京", "你好啊"]
words, ners = fool.analysis(text)
print(ners)
我的环境是Linux下Python3环境,Windows环境下类似。找不到模型文件的, 可以看下sys.prefix,一般默认为/usr/local/。具体代码和配置好的Linux下的venv环境可以查看我的GitHub。