Python自然语言处理第三章 - 详解一个简单的分词方法

有些语言的书写系统,由于没有词边界的可视表示这一事实,使得文本分词变得更加困难。
这里介绍一种简单的分词方法。

一,分词问题描述

对以下没有明显词边界的句子进行分词:

  1. doyouseethekitty
  2. seethedoggy
  3. doyoulikethekitty
  4. likethedoggy

遇到的第一个挑战仅仅是表示这个问题:我们需要找到一种方法来分开文本内容与分词
标志。
我们可以给每个字符标注一个布尔值来指示这个字符后面是否有一个分词标志。

例如:

>>> text = "doyouseethekittyseethedoggydoyoulikethekittylikethedoggy"
>>> seg1 = "0000000000000001000000000010000000000000000100000000000"
>>> seg2 = "0100100100100001001001000010100100010010000100010010000"

其中seg1和seg2表示两个分词结果,0表示当前字符不是分词结束位置,1表示在当前字符下分开。

可以用如下函数来将seg分词标志对原文本进行分词。

def segment(text, segs):
words = []
last = 0
for i in range(len(segs)):
if segs[i] == '1':
words.append(text[last:i+1])
last = i+1
words.append(text[last:])
return words
>>> text = "doyouseethekittyseethedoggydoyoulikethekittylikethedoggy"
>>> seg1 = "0000000000000001000000000010000000000000000100000000000"
>>> seg2 = "0100100100100001001001000010100100010010000100010010000"
>>> segment(text, seg1)
['doyouseethekitty', 'seethedoggy', 'doyoulikethekitty', 'likethedoggy'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值