Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说结巴分词的安装及使用[通俗易懂],希望能够帮助你!!!。
参考内容:
一、安装
我这里采用的是在cmd命令行中进行pip安装:pip install jieba
进入python环境,import jieba如果没有问题表示安装成功:
二、使用
1)结巴分词的分词模式有3种:全模式;精确模式;搜索引擎模式;结巴分词还有支持繁体分词、支持自定义词典、MIT授权协议等特性。
使用的算法:
对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法
函数描述:
jieba.cut(“需要分词的字符串”, cut_all =True, HMM = False)
jieba.cut_for_search(“需要分词的字符串”, HMM = False)
jieba.Tokenizer(dictionary=DEFAULT_DICT)
import jieba
# 1. 采用“全模式”切词,把句子中的所有可以成词的词语都扫描出来。 速度非常快,但是不能解决歧义;
seg_list = jieba.cut('我叫XXX,是昆明理工大学的学生。', cut_all=True)
print(" ".join(seg_list))
# 2. 采用“精确模式”切词,试图将文本最精确的分开,适合于做文本分析
seg_list = jieba.cut('我叫XXX,是昆明理工大学的学生。')
print(" ".join(seg_list))
# 3. 采用“搜索引擎模式”切词,在精确的基础上对长词进行进一步的切分
seg_list = jieba.cut_for_search('我叫XXX,是昆明理工大学的学生。')
print(" ".join(seg_list))
运行结果如下:
2)添加自定义词典
开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率。
可以看出上面的例子不能将“昆明理工大学”当成一个词分析出来,此时我们可以加一个外部词典辅助jieba分析出“昆明理工大学”这个词。
该外部自定义词典是一个txt文档,在里面添加内容“昆明理工大学 8”,注意file_name(词典路径名)若为路径或二进制方式打开的文件,则文件必须为UTF-8编码。
词典格式和dict.txt一样,一个词占一行;每一行分三部分,一部分为词语,另一部分为词频(可省略),最后为词性(可省略),用空格隔开。词频可省略,使用计算出的能保证分出该词的词频。
引入该词典的方法:jieba.load_userdict("词典名.txt") # "词典名.txt" 为自定义词典的路径
import jieba
jieba.load_userdict("open_data/user_dict.txt") #引入外部用户自定义词典
seg_list = jieba.cut('我叫XXX,是昆明理工大学的学生。', cut_all=True)#采用“全模式”切词
print(" ".join(seg_list))
seg_list = jieba.cut('我叫XXX,是昆明理工大学的学生。')#采用“精确模式”切词
print(" ".join(seg_list))
seg_list = jieba.cut_for_search('我叫XXX,是昆明理工大学的学生。')#采用“搜索引擎模式”切词
print(" ".join(seg_list))
运行结果如下:(原来不能识别出“昆明理工大学,现在可以了)
3)对文件进行分词
import jieba
import jieba.analyse
#对文件进行分词
def splitFile(inputFile,outputFile):
fin = open(inputFile,'r',encoding='utf-8')
fout = open(outputFile,'w',encoding='utf-8')
for line in fin:
line = line.strip()
line = jieba.cut(line) #采用“精确模式进行切词”
outstr = " ".join(line)
print(outstr)
fout.write(outstr + '\n')
fin.close()
fout.close()
splitFile("open_data/dang_test.txt","open_data/dang_tag.txt")
上一篇
已是最后文章
下一篇
已是最新文章