jieba分词(1)

近几天在做自然语言处理,看了一篇论文:面向知识库的中文自然语言问句的语义理解,里面提到了中文的分词,大家都知道对于英文的分词,NLTK有很好的支持,但是NLTK对于中文的分词并不是很好(其实也没有怎么尝试,哈哈哈!)

然后发现了jieba(结巴)分词,发现还是很强大的,还有一个THULAC(http://thulac.thunlp.org/#%E7%BC%96%E8%AF%91%E5%92%8C%E5%AE%89%E8%A3%85),THULAC我还没有试过,这次先来展示一下jieba分词的一些基本用法,后期继续更新

本文并非原创,参考的博客有:http://blog.csdn.net/xiaoxiangzi222/article/details/53483931

#-*- coding:utf-8 -*-
import jieba
import jieba.posseg as jp

string='已结婚的和尚未结婚的青年都要实行计划生育'
#全模式
list1=jieba.cut(string,cut_all=True)
print "/".join(list1)
#精确模式
list2=jieba.cut(string,cut_all=False)
print "/".join(list2)
#搜索引擎模式(****默认是精确模式*****)
list3=jieba.cut_for_search(string)
print "/".join(list3)

print '*'*80

# 问题来了:
#         ①已/结婚/的/和/尚未/结婚/的/青年/都/要/实行/计划生育
#         ②已/结婚/的/和尚/未/结婚/的/青年/都/要/实行/计划生育
#     这两个貌似好想都可以,那到底是怎么分词的呢,大家接着往下看


#添加自己的词典进行分词
#userdict.txt:
#             和尚 10000000 n  (词+空格+词频+空格+词性)
jieba.load_userdict("userdict.txt")
#修改词频之后,结果就是②
list4=jieba.cut(string)
print "/".join(list4)

jieba.del_word('和尚')
list7=jieba.cut(string)
print "/".join(list7)

print '*'*80
#动态更改分词器
string1='李小福是创新办主任也是云计算方面的专家'
list5=jieba.cut(string1)
print "/".join(list5)
jieba.add_word('创新办','10','n')
jieba.add_word('云计算')
list6=jieba.cut(string1)
print "/".join(list6)

print '*'*80
#显示词性
words =jp.cut(string)
for w in words:
  print w.word, w.flag

运行结果:  

已/结婚/的/和尚/尚未/未结/结婚/的/青年/都/要/实行/计划/计划生育/生育
已/结婚/的/和/尚未/结婚/的/青年/都/要/实行/计划生育
已/结婚/的/和/尚未/结婚/的/青年/都/要/实行/计划/生育/计划生育
********************************************************************************
已/结婚/的/和尚/未/结婚/的/青年/都/要/实行/计划生育
已/结婚/的/和/尚未/结婚/的/青年/都/要/实行/计划生育
********************************************************************************
李小福/是/创新/办/主任/也/是/云/计算/方面/的/专家
李小福/是/创新办/主任/也/是/云计算/方面/的/专家
********************************************************************************
已 d
结婚 v
的 uj
和 c
尚未 d
结婚 v
的 uj
青年 t
都 d
要 v
实行 v
计划生育 l

原文地址:https://www.cnblogs.com/ybf-yyj/p/7552822.html