初学者报到: 实现了一个最大匹配的分词算法

看了一段时间了的自然语言,不过还是很初级。

今天下载了一个分词的字典,自己用python写了一个分词的函数。

放上来,给大家踩,不吝赐教!

用的是最大匹配算法。

# -*- coding: cp936 -*-

import string

def loaddict():
filename=raw_input(‘Enter file name:’)
f = open(filename,’r’)

DICT={}
for eachLine in f:
dictStr = eachLine.decode(‘cp936’)
strList=dictStr.split(“\t”,2)
DICT[strList[0]]=strList[1].split(“\n”,1)[0]
global DIC_MAXL
if(DIC_MAXL<len(strList[0])):
DIC_MAXL = len(strList[0])
f.close()
print(“max length:”)
print(DIC_MAXL)
return DICT;

def segmentation(dic):
sentence = unicode(raw_input(‘请输入中文句子:’),’cp936′)
print sentence
length=len(sentence)
print(‘length:’)
print length
global DIC_MAXL
if(length<DIC_MAXL):
wlen=length
else:
wlen=DIC_MAXL
testS=sentence
wordList=[]
while(len(testS)>0):
word=testS[0:wlen]
meet=False;
while((not meet )and (len(word)>0) ):
if(dic.has_key(word)):
wordList.append(word)
testS=testS[len(word):len(testS)]
meet=True;
else:
if(len(word)==1):
wordList.append(word)
testS=testS[len(word):len(testS)]
meet=True;
else:
word=word[0:len(word)-1]
return wordList

DIC_MAXL=0
dictionary=loaddict()
print DIC_MAXL
while(True):
wordl=segmentation(dictionary)
for eachChar in wordl:
print eachChar

真的很初级,大家轻踩!

也别不好意思踩,踩了我就能进步了!

多谢

此条目发表在中文分词分类目录,贴了, , 标签。将固定链接加入收藏夹。

初学者报到: 实现了一个最大匹配的分词算法》有 12 条评论

  1. 52nlp说:

    多谢分享;另外发现你发文章时选择了“日志”,所以首页显示不了题目,我改了一下!

    [回复]

  2. ricky说:

    谢谢。
    不好意思,是不是以后都用 “标准” 来发文章?。
    第一次发不知道!

    [回复]

    52nlp 回复:

    嗯,应该是选择“标准”来发文章。

    [回复]

    小齐 回复:

    你们好,能加我qq吗?我有点问题想请教你们?谢谢了哥哥们?1154195581

    [回复]

    52nlp 回复:

    抱歉,那个qq群不是我建的,我也没有加在里面。

    小齐 回复:

    你好哥,能加你qq请教一下吗?非常感谢你啊

    52nlp 回复:

    有问题可以考虑邮箱联系我:52nlpcn#gmail.com,不保证能解决你的问题,暂不加qq,抱歉!

  3. terry说:

    谢谢版主的分享,我也想学一下中文分词的东西。版主给出的代码没有缩进,不便于阅读,能否改进一下?谢谢了

    [回复]

  4. terry说:

    其实楼主实现的这个叫做:简单的最大匹配算法,还有一个复杂的

    [回复]

  5. xiaofeng说:

    分词的词典从哪里下,然后,如果安装字典?能全部打个包,写详细点么?谢谢.

    [回复]

    52nlp 回复:

    在这里找吧,两篇文章里的资源都可以考虑:
    http://www.52nlp.cn/?s=%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D%E8%B5%84%E6%BA%90

    [回复]

    52nlp 回复:

    这里还有一个搜狗词库的词典:
    http://download.labs.sogou.com/dl/sogoulabdown/SogouW/SogouW.zip

    [回复]

发表评论

电子邮件地址不会被公开。 必填项已用*标注