Skip to content

Commit c002378

Browse files
committed
clear code newmm
1 parent 28b3e88 commit c002378

File tree

1 file changed

+12
-21
lines changed

1 file changed

+12
-21
lines changed

pythainlp/tokenize/newmm.py

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# -*- coding: utf-8 -*-
2-
from __future__ import absolute_import,division,unicode_literals,print_function
3-
import six
4-
if six.PY2:
5-
from builtins import *
2+
from __future__ import absolute_import,unicode_literals
63
'''
74
โปรแกรม multi-cut
85
ตัดคำภาษาไทยโดยใช้ Maximum Matching algorithm
96
เดติดโค้ดต้นฉบับ คุณ Korakot Chaovavanich
107
จาก https://www.facebook.com/groups/408004796247683/permalink/431283740586455/
118
และ https://gist.github.com/korakot/fe26c65dc9eed467f4497f784a805716
129
'''
10+
import six
11+
if six.PY2:
12+
from builtins import *
1313
import re
1414
import copy
1515
from pythainlp.tools import file_trie
@@ -44,9 +44,7 @@ def multicut(text,data):
4444
''' ส่งคืน LatticeString คืนมาเป็นก้อนๆ
4545
'''
4646
words_at = defaultdict(list) # main data structure
47-
if data=="":
48-
trie = file_trie(data="newmm")
49-
else:
47+
if data!="": # ถ้าหากกำหนดข้อมูลโดยใช้ dict ของตัวเอง
5048
i=0
5149
data2=copy.copy(data)
5250
while i<len(data2):
@@ -55,6 +53,8 @@ def multicut(text,data):
5553
data2[i]+="#"
5654
i+=1
5755
trie = Trie(data2)
56+
else:
57+
trie = file_trie(data="newmm")
5858
def serialize(p, p2): # helper function
5959
for w in words_at[p]:
6060
p_ = p + len(w)
@@ -99,22 +99,13 @@ def serialize(p, p2): # helper function
9999

100100
def mmcut(text,data=''):
101101
res = []
102-
text=tcc.tcc(text,sep='#')
103-
if(text[len(text)-1]!='#'):
104-
text+='#'
102+
text=tcc.tcc(text,sep='#') # ให้นำข้อความมาผ่าน tcc
103+
if(text[len(text)-1]!='#'): # ถ้าตัวสุดท้ายของสตริงไม่เป็น #
104+
text+='#' # ให้เพิ่ม # เข้าไป
105105
for w in multicut(text,data=data):
106106
mm = min(w.multi, key=lambda x: x.count('/'))
107107
res.extend(mm.split('/'))
108-
listdata=res
109-
i=0
110-
num=len(listdata)
111-
while i<len(listdata):
112-
if(re.search('\A[ก-ฮ]#\Z',listdata[i]) and i-1>=0):
113-
listdata[i-1]+=listdata[i]
114-
listdata[i]='#'
115-
num-=1
116-
i+=1
117-
return [x.replace('#','') for x in res if x!='#']
108+
return [x.replace('#','') for x in res if x!='#'] # เอา # ออก
118109
def combine(ww):
119110
if ww == []:
120111
yield ""
@@ -135,5 +126,5 @@ def listcut(text,data=''):
135126
return list(combine(ww))
136127
if __name__ == "__main__":
137128
text='ผมรักคุณนะครับโอเคบ่พวกเราเป็นคนไทยรักภาษาไทยภาษาบ้านเกิด'
138-
print(mmcut(text))
129+
mmcut(text)
139130
#print(listcut(text))

0 commit comments

Comments
 (0)