日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python最大分词_中文分词算法之最大正向匹配算法(Python版)

發布時間:2024/8/23 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python最大分词_中文分词算法之最大正向匹配算法(Python版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最大匹配算法是自然語言處理中的中文匹配算法中最基礎的算法,分為正向和逆向,原理都是一樣的。

正向最大匹配算法,故名思意,從左向右掃描尋找詞的最大匹配。

首先我們可以規定一個詞的最大長度,每次掃描的時候尋找當前開始的這個長度的詞來和字典中的詞匹配,如果沒有找到,就縮短長度繼續尋找,直到找到或者成為單字。

實例:

S1="計算語言學課程是三個課時" ,設定最大詞長MaxLen = 5 ,S2= " "

字典中含有三個詞:[計算語言學]、[課程]、[課時]

(1)S2="";S1不為空,從S1左邊取出候選子串W="計算語言學";

(2)查詞表,“計算語言學”在詞表中,將W加入到S2中,S2=“計算語言學/ ”, 并將W從S1中去掉,此時S1="課程是三個課時";

(3)S1不為空,于是從S1左邊取出候選子串W="課程是三個";

(4)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W="課程是三";

(5)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W="課程是";

(6)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W="課程"

(7)查詞表,W在詞表中,將W加入到S2中,S2=“計算語言學/ 課程/ ”,并 將W從S1中去掉,此時S1="是三個課時";

(8)S1不為空,于是從S1左邊取出候選子串W="是三個課時";

(9)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W="是三個課";

(10)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W="是三個";

(11)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W="是三"

(12)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W=“是”,這時 W是單字,將W加入到S2中,S2=“計算語言學/ 課程/ 是/ ”,并將 W從S1中去掉,此時S1="三個課時";

(13)S1不為空,從S1左邊取出候選子串W="三個課時";

(14)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W="三個課";

(15)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W="三個";

(16)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W=“三”,這時 W是單字,將W加入到S2中,S2=“計算語言學/ 課程/ 是/ 三/ ”,并 將W從S1中去掉,此時S1="個課時";

(17)S1不為空,從S1左邊取出候選子串W="個課時";

(18)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W="個課";

(19)查詞表,W不在詞表中,將W最右邊一個字去掉,得到W=“個”, 這時W是單字,將W加入到S2中,S2=“計算語言學/ 課程/ 是/ 三/ 個/ ",并將W從S1中去掉,此時S1="課時";

(20)S1不為空,從S1左邊取出候選子串W="課時";

(21)查詞表,W在詞表中,將W加入到S2中,S2=“計算語言學/ 課程/ 是/ 三/ 個/ 課時/ ",并將W從S1中去掉,此時S1=""。

(22)S1為空,輸出S2作為分詞結果,分詞過程結束。

中文分詞算法的Python實現:

腳本接受兩個參數,一個是輸入文件的路徑,另一個是詞典的路徑。

它的運行方法如下:

python max-match.py

#!/usr/bin/env python

import cPickle as pickle

import sys

window_size=5

def max_match_segment(line, dic):

# write your code here

chars = line.decode("utf8")

words = []

idx = 0

while idx < len(chars):

matched = False

for i in xrange(window_size, 0, -1):

cand=chars[idx:idx+i].encode("utf8")

if cand in dic:

words.append(cand)

matched = True

break

if not matched:

i = 1

words.append(chars[idx].encode("utf8"))

idx += i

return words

if __name__=="__main__":

try:

fpi=open(sys.argv[1], "r")

except:

print >> sys.stderr, "failed to open file"

sys.exit(1)

try:

dic = pickle.load(open(sys.argv[2], "r"))

except:

print >> sys.stderr, "failed to load dict %s" % sys.argv[2]

sys.exit(1)

try:

fpo = open("out.txt","w")

except:

print >> sys.stderr, "failed to load out.txt"

sys.exit(1)

for line in fpi:

fpo.write("\t".join( max_match_segment(line.strip(), dic) ))

當然,這只是最基礎的,還可以有很多高級的優化,比如說改成Trie樹版本的,控制最大詞長度的等等。

總結

以上是生活随笔為你收集整理的python最大分词_中文分词算法之最大正向匹配算法(Python版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久久av无码免费网站下载 | 日本高潮网站 | a√天堂网 | 少妇一夜三次一区二区 | 91看片淫黄大片91桃色 | 日韩大胆人体 | 国内毛片毛片毛片毛片 | 精品无码国产污污污免费网站 | 欧美成人综合在线 | 黑人一级女人全片 | 国产精品呦呦 | 你懂的亚洲 | 六月丁香婷婷综合 | 色妹子综合 | 国产精品天美传媒入口 | 国产一区日韩精品 | 日本欧美三级 | 亚洲图片另类小说 | 亚洲熟区 | 日日撸视频 | 国产v亚洲v天堂无码久久久 | 国产美女永久免费无遮挡 | 国产成人在线免费观看 | 啪啪影音 | 国产极品视频 | av成人在线免费观看 | 一个色综合网 | 日本十八禁视频无遮挡 | 日韩片在线 | 一区二区在线免费观看 | av手机在线免费观看 | 91免费精品 | 国产欧美日| 精品免费看 | 在线观看天堂av | 日本精品网 | 中文字幕第一区综合 | 亚洲v视频 | 熊猫成人网 | 最近最新中文字幕 | 日韩中文字幕免费 | 欧美日韩在线一区 | 国产欧美一区二区三区在线看蜜臀 | 好吊色青青草 | 特级a级片| av黄在线观看 | 少妇人妻好深好紧精品无码 | 欧美三级a做爰在线观看 | 亚洲欧美日韩综合在线 | 在线观看中文字幕一区二区 | 久久福利影院 | 国产一级一级片 | 中文字幕一区二区三区精彩视频 | 96超碰在线 | 夫妻性生活黄色大片 | 女同性恋一区二区三区 | 欧美69视频 | 黄色一级片免费看 | 国产草草浮力影院 | 日韩色 | 中文字幕第一页在线视频 | 亚洲大尺度av | 操操综合| 在线视频观看一区 | 精品少妇人妻av一区二区三区 | 国产超碰人人 | 成人性生交生交视频 | 国产精品国产一区二区三区四区 | 国产精品88久久久久久妇女 | 日韩中文字幕久久 | 黄色成人免费视频 | 日本一区二区免费看 | 四虎影视免费永久观看在线 | 公侵犯人妻一区二区三区 | 色av导航 | 日韩欧美在线观看一区二区 | 最好看的mv中文字幕国语电影 | 天天av天天操 | 亚洲综合五月天 | 顶级黄色片 | 成年人网站免费观看 | 精品中文一区二区三区 | 欧美性jizz18性欧美 | 日韩欧美黄色片 | 国产日韩精品一区二区三区 | 偷偷操不一样的99 | 污网站在线播放 | 9i精品福利一区二区三区 | 超碰资源 | 性高湖久久久久久久久aaaaa | 国产在线麻豆 | 老女人性生活视频 | 久久久久亚洲AV成人网人人小说 | 国产毛片自拍 | 黑人极品videos精品欧美裸 | 四虎影库 | 日韩在线不卡av | 欧洲金发美女大战黑人 | 长篇高h肉爽文丝袜 |