- jieba
- 哈工大LTP
- hanlp
- pkuseg
分词工具一:jieba
安装方式:直接 pip install jieba ,即可安装成功。
import jieba
# 分词
cut_list = jieba.cut("我是来自韩山师范学院,数学与统计学院的一名学生", cut_all=True)
print("全模式: " + ",".join(cut_list))
cut_list = jieba.cut("我是来自韩山师范学院,数学与统计学院的一名学生", cut_all=False)
print("精准模式: " + ",".join(cut_list)) # 不加参数,一般默认精准模式
cut_list = jieba.cut_for_search("我是来自韩山师范学院,数学与统计学院的一名学生")
print("搜索引擎模式: " + ", ".join(cut_list))
#获取自定义词典
# jieba.load_userdict("userdict.txt")
#添加词
jieba.add_word('石墨烯')
#删除词
jieba.del_word('自定义词')
输出结果:
全模式: 我,是,来自,韩山,山师,师范,师范学院,学院,,,数学,与,统计,统计学,计学,学院,的,一名,名学,学生
精准模式: 我,是,来自,韩山,师范学院,,,数学,与,统计,学院,的,一名,学生
搜索引擎模式: 我, 是, 来自, 韩山, 师范, 学院, 师范学院, ,, 数学, 与, 统计, 学院, 的, 一名, 学生
分词工具二:哈工大LTP
安装方式:
# -*- coding: UTF-8 -*-
from pyltp import Segmentor
# 分词
def segmentor(sentence):
segmentor = Segmentor() # 初始化
segmentor.load('ltp_data/cws.model') # 加载模型
words = segmentor.segment(sentence) # 分词
words_list = list(words)
segmentor.release() # 释放模型
return words_list
print(",".join(segmentor("我是来自韩山师范学院,数学与统计学院的一名学生")))
输出结果:
柯美美,是,来自,韩山,师范学院,,,数学,与,统计,学院,的,一,名,学生
分词工具三:hanlp
from pyhanlp import *
def load_dictionary():
"""
加载HanLP中的mini词库
:return: 一个set形式的词库
"""
IOUtil = JClass('com.hankcs.hanlp.corpus.io.IOUtil')
path = HanLP.Config.CoreDictionaryPath.replace('.txt', '.mini.txt')
dic = IOUtil.loadDictionary([path])
return set(dic.keySet())
def fully_segment(text, dic):
word_list = []
for i in range(len(text)): # i 从 0 到text的最后一个字的下标遍历
for j in range(i + 1, len(text) + 1): # j 遍历[i + 1, len(text)]区间
word = text[i:j] # 取出连续区间[i, j]对应的字符串
if word in dic: # 如果在词典中,则认为是一个词
word_list.append(word)
return word_list
dic = load_dictionary()
print(fully_segment("商品和服务",dic))
输出结果:['商', '商品', '品', '和', '和服', '服', '服务', '务']
分词工具四:pkuseg
预训练模型文件下载地址:https://github.com/lancopku/pkuseg-python/releases
pkuseg分词详见:https://github.com/lancopku/pkuseg-python
import pkuseg
# 以默认配置加载模型
seg = pkuseg.pkuseg(model_name= './data/msra')
result = seg.cut("我是来自韩山师范学院数学与统计学院的一名学生")
print(result)
seg = pkuseg.pkuseg()
result = seg.cut("我是来自韩山师范学院数学与统计学院的一名学生")
print(result)
输出结果:
['我', '是', '来自', '韩山师范学院数学与统计学院', '的', '一', '名', '学生']
['我', '是', '来自', '韩山', '师范', '学院', '数学', '与', '统计', '学院', '的', '一', '名', '学生']
(后续再更新)