台灣最大程式設計社群網站
線上人數
1846
 
會員總數:241166
討論主題:186825
歡迎您免費加入會員
討論區列表 >> C/C++ >> 中文斷詞字串分割求助~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
中文斷詞字串分割求助~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
價值 : 100 QP  點閱數:99 回應數:2

樓主

amber
門外漢
0 1
12 0
發送站內信


各位大大給個help~
目前有一個詞庫需要根據詞庫的詞作出中文斷詞系統(長辭優先)
個人目前的想法是:
1.使用者輸入字串
2.根據輸入的字串去分割詞最少分割一個詞,最多分割使用者輸入的長度,例如使用者輸入:國立成功大學很多校友,一個詞分割:國\立\成\功\大\學\很\多\校\友 ,在分成兩個詞:國立\成功\大學\很多\校友\
3.根據分割的詞去比對辭典的最長辭
4.輸出長辭優先: 國立成功大學\很\多\校友




搜尋相關Tags的文章: [ 斷詞,中文斷詞,字串分割 ] ,
本篇文章發表於2017-11-05 18:21
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應
1.取第一個字出來比, (國)
2.到資料庫取以第一個字為字首的字串的資料表 (國%)
3.用第一個字 再+ 2 3 4 5 字從資料表中去取 國立 國立成 國立成功..... 國立成功大學
4.回到第 1 用 【很】去比對

之前傳呼時代有寫過類似程式

另一個方法: 作法一樣只是 先取回二個字的字首字串, 再加字資料傳輸量較少也較快
本篇文章回覆於2017-11-06 17:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
一般來說,我會用資料庫本身的全文索引的特性去做處理。

由於我不太清楚你用何種資料庫。我這邊之前有做過類似的是用mysql為主。
但其實我的搜尋字詞庫中,除了原本的詞之類。還有另外用了編碼字詞庫。 如「國立」會在另一個欄位儲存成為 「u8123456 u8789456」(編碼是隨便打的,意思一下)

再來利用其mysql的 MATCH() AGAINST 的特性。它會幫你計算出有對應到的字詞相似度有多少。(會用數值呈現)
我之前做的是屬於突顯高亮字詞的做法。其特性跟你目前想要的很類似。

原則上也是找出符合最大的字詞出來排序後。再一個一個字詞標上高亮的語法。

不過以上的做法需要符合一些條件,也就是說需要使用全文索引的特性。才可以做MATCH處理。
這樣的做法其實會在無形之間增加容量。

當然,如果字詞庫筆數不多的情況下。還是可以先用like的方式來處理。
但一般來說如果你的筆數有高達8000筆以上的情況。就真的不建議用like處理了。
本篇文章回覆於2017-11-07 16:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.