结巴是现在中文分词比较好用的包,这里列出一些基本的用法,以后再慢慢补充
- 下载
pip install jieba
- 分词有两种模式,cut_all = True or False,默认为False。第一种会尽量返回所有可能构成的词汇,第二种就是按最优去切分
text = '我和小明一起去北京故宫博物馆玩' import jieba wordlist = jieba.cut(text, cut_all=True) word_space_split = " ".join(wordlist) print(word_space_split) #我 和 小 明 一起 去 北京 北京故宫 故宫 博物 博物馆 玩 wordlist = jieba.cut(text, cut_all=False) word_space_split = " ".join(wordlist) print(word_space_split) #我 和 小明 一起 去 北京故宫 博物馆 玩
- 如果想只要长度大于2的词
words = [x for x in jieba.cut(text) if len(x) >= 2] #['小明', '一起', '北京故宫', '博物馆']
- 分词时也可以同时标注词性
import jieba.posseg as psg print([(x.word,x.flag) for x in psg.cut(text)]) #[('我', 'r'), ('和', 'c'), ('小明', 'n'), ('一起', 'm'), ('去', 'v'), ('北京故宫', 'ns'), ('博物馆', 'n'), ('玩', 'v')]
- 如果文本中有专有名词,也可以使用自己的字典
user_dict.txt 格式为每行是一个词,依次为词名,词频,词性jieba.load_userdict('user_dict.txt') print(' '.join(jieba.cut(text)))
或者是直接加入词汇
或者jieba.add_word('小明')
print('/'.join(jieba.cut('我和小明', HMM=False))) print(jieba.suggest_freq('我和', True)) print('/'.join(jieba.cut('我和小明', HMM=False))) print(jieba.suggest_freq(('我','和'), True)) print('/'.join(jieba.cut('我和小明', HMM=False))) #我/和/小/明 #3041 #我和/小/明 #3040 #我/和/小/明
- 取频率最高的5个词
from collections import Counter c = Counter(text).most_common(5)
- 并行计算
#打开,num为进程参数 jieba.enable_parallel(num) #关闭 jieba.disable_parallel()
- 结巴词性表
形容词(1个一类,4个二类)
a 形容词
ad 副形词
an 名形词
ag 形容词性语素
al 形容词性惯用语
区别词(1个一类,2个二类)
b 区别词