jieba icon indicating copy to clipboard operation
jieba copied to clipboard

專詞定義問題

Open sati-bodhi opened this issue 2 years ago • 4 comments

我想利用「結巴」幫忙辨認穴位名稱,以便在網頁上做超連結的標示。中間遇到一個問題,想請各位幫幫忙。

# 專詞
word_list = ["陽溪", "曲池", "臍中"]
# 例句
s1 = "(手三里)在前臂背面橈側,當陽溪與曲池連線上,肘橫紋下2寸。"
s2 = "(中脘)在上腹部,前正中線上,當臍中上4寸。"
s3 = "(神闕)在腹中部,臍中央。"

for word in word_list:
    jieba.add_word(match[0], freq=1, tag="nz")

jieba.cut(s1)
jieba.cut(s2)
jieba.cut(s3)

辨識結果:

s1: (手三里)在前臂背面橈側,當陽溪曲池連線上,肘橫紋下2寸。 s2: (中脘)在上腹部,前正中線上,當臍中上4寸。 s3: (神闕)在腹中部,臍中央。

我不知道該如何在保留s1s2的前提下,排除s3的辨識條件。

從文法的角度上來說,①s3未尾的不成詞,且②「腹 / 中部」與「臍 / 中央」又是對句,對以中文為母語的人來說,「臍中」在s3不該聯讀,是一目了然的事。但這些條件不知該如何在「結巴」中落實?

謝謝!

sati-bodhi avatar May 07 '22 02:05 sati-bodhi

类似这种?

https://github.com/hankcs/HanLP/blob/doc-zh/plugins/hanlp_demo/hanlp_demo/zh/demo_custom_dict_stl.py#L16

botissue avatar May 07 '22 04:05 botissue

类似这种?

https://github.com/hankcs/HanLP/blob/doc-zh/plugins/hanlp_demo/hanlp_demo/zh/demo_custom_dict_stl.py#L16

以上連結所示這個例句:"正向匹配商品和服务、任何和服务必按上述切分"的後半子句,其實最自然的句讀方式應該是:「任何 / 和服务 / 必 / 按 / 上述 / 切分。」因為這裡指的是「和服務」短語未被切分的狀態。這個短語本身不成詞,屬於特殊語境之下的特殊用語,這種情況在書面上一般會用開關引號標示出來的。

且「務必」這個詞在自然語當中很常見,「和服」也是自然語中的專有名詞,如果沒有語境及上下文,就算讓人來做句讀,都會有爭議。例如,在這個「強制校正」條例之下,像「和服務必妥善收藏」這樣的例句就會無法正確句讀。

猜想像這類情況務必要由語境上來解決。電腦按語境為詞組做區分應該不會太困難。

sati-bodhi avatar May 07 '22 06:05 sati-bodhi

我的意思是针对每个可能出错的语境,加入这种规则。比如

tok.dict_force = { '和服务必按': ['和服务', '必', '按'], '和服務必': ['和服', '務必'], '臍中央': ['臍', '中央'], '臍中' }

就能实现你要的效果。要有想象力。

botissue avatar May 07 '22 15:05 botissue

對,這不失為一種可行的方案。我認為,如果能夠按照不同語境來製作這類的規則模組,效果應該會很不錯。

sati-bodhi avatar May 08 '22 00:05 sati-bodhi