分割其实包含了分词、断句等等,分词对于中文文本是十分重要的。本章我也只关注分词,当然本章最后介绍的分词方法过去简单,仅供参考。
1. 分割, 按照01组成的序列对字符串进行拆分
def segment(text, segs): # 利用01数据将 str切分开
words = []
last = 0
for i in range(len(segs)): # 循环找到1所在的位置
if segs[i] == '1':
words.append(text[last:i+1]) # 把两个1之间的字母放一起
last = i+1
words.append(text[last:])
return words
text = "doyouseethekittyseethedoggydoyoulikethekittylikethedoggy"
seg1 = "0000000000000001000000000010000000000000000100000000000"
segment(text, seg1)
结果如下 ['doyouseethekitty', 'seethedoggy', 'doyoulikethekitty', 'likethedoggy']
2. 评价,分词既不能分的过细又不能太粗
def evaluate(text, segs): # 评价切分的好坏
words = segment(text, segs)
text_size = len(words) # 切出的词有多少个,保证分词不会太细
lexicon_size = len(' '.join(list(set(words)))) # 切出非重复词的长度,注意这里是长度不是个数,保证切出的词不会太粗,文章前后能切出