rime / plum

東風破 /plum/: Rime configuration manager and input schema repository
GNU Lesser General Public License v3.0
1.32k stars 122 forks source link

辭庫優化,縮減掉任何可以被其他短字詞拼出來的長字詞。 #51

Closed ShikiSuen closed 2 years ago

ShikiSuen commented 2 years ago

辭庫內有太多詞需要刪減,明明都可以拆分成各種小分詞的。

ShikiSuen commented 2 years ago

剛剛敲字有點匆忙。現已更新一樓正文。

這個問題是我今天在試圖合併新酷音與目前的東風破各自的辭庫的時候想到的。 要是有程式可以自動判定並且剔除符合這種條件的超長字詞的話就好了。

輸入法辭庫不是百科全書。 除非一個專有名詞在敲的時候經常被其他同類候選詞打斷,否則收錄的詞本身越精簡越好。

lotem commented 2 years ago

很難機器判定吧?讓人看都沒有統一標準,我覺得不太可行。

標題描述完全無法操作。任何的詞都可以用單字拼出來。怎樣定義什麼是詞?目前來看最好就是以詞庫裏收錄了該詞條爲判斷標準。

ShikiSuen commented 2 years ago

每個最小拆詞單元一定是至少雙字詞。

至少,舉例說吧,諸如「中華人民共和國中央軍事委員會 」這種詞很有必要拆成: 「中華」「人民」「共和國」「中央」「軍事」「委員會」

四字成語熟語等順口溜一般情況下不用拆,除非實在太長。

sgalal commented 2 years ago

不可以這樣拆的,比如「中華人民共和國中央軍事委員會 」這個例子,如果詞庫中沒有這個詞了,那打普通話拼音時就候選首位就會變為「中華任命共和國中央軍事委員會」,會極大降低打字的準確性。

ShikiSuen commented 2 years ago

@sgalal 我是沒發現這哪裡影響在注音輸入模式下的準確性了,畢竟大千聲韻並擊要求所有漢字的讀音與聲調全部輸入。

那不然的话,地球拼音與注音兩者的辭庫最好還是彼此隔離開吧。 正好地球注音可以全部把香港字都換成台灣字。

ShikiSuen commented 2 years ago

或者地球拼音的辞库可以拆成两段式: 核心辞库仅针对注音等「需要输入全部的声韵与音调」的输入模式优化, 而扩展辞库则收录那些任何搜狗式/智能狂拼式「省略型」输入模式下需要优化的专有长词。 我对并击拼音(宫保拼音)不熟悉,不知道并击拼音的情况怎样,得佛振来讲。

sgalal commented 2 years ago

即使輸入聲調其他詞也會有問題的,只要有同音詞就會有這個問題

ShikiSuen commented 2 years ago

@sgalal 只要是支持大千声韵并击且必须要求单字全部注音输入的输入法,就不该出现这个问题。 要是还能出现问题的话,一定是基础词库烂透了。 我这边测试三款大千声韵并击型注音输入法,都是没有收录这个长词的,但无一失手:

https://user-images.githubusercontent.com/3164826/142567450-0d95cdca-3093-474f-b570-5fc2c4b23325.mp4

ShikiSuen commented 2 years ago

P.S.: 小麦注音在词库联想与学习用户输入习惯这方面还没完工呢。就这样都可以正确输入这种在词库当中不存在的长词。 哦对了我敲上面这句化的时候用的是小麦注音,也没有在特意选字。

tumuyan commented 2 years ago

根据真的用了wiki词库的我的使用经验,对于不定长码的拼音词库而言,长词对候选词影响其实并不大(特别是六字 以上的多个词构成的词)。就效率而言,影响也不影响。真的有拆开的必要性吗?

ShikiSuen commented 2 years ago

不然词库太肥了。我也只是想借由这个讨论串找出一个答案而已。 这样的话,哪怕最终佛振一票否决,我自己在维护的威注音的词库也可以受益于这个讨论结果、可以放心精简。

tumuyan commented 2 years ago

基于已有词库使用代码硬拆词难度并不大,把长词用短词遍历就完了,能整分就说明是废词。 会出现的问题是可能拆错和过度拆分罢了。

ShikiSuen commented 2 years ago

你说「把长词用短词遍历就完了」,我也是这么想的。可惜我编程白痴,不然我自己就先实践下了。

sgalal commented 2 years ago

不知我是否沒説明白,我反而覺得現在詞庫的詞不夠多,而不是需要刪減。比如我想輸入「齊次馬爾可夫假設」,但是詞庫沒有這個詞,候選會是「其次馬爾可夫假設」。

同樣,如果把目前詞庫中的長詞刪去,上述現象會越來越多,而不是更少。

ShikiSuen commented 2 years ago

@sgalal 你这属于人名词库收录,属于例外情况。 人名词库收录的话,无法拆成其他短词。 日本人的姓名或许可以算作例外,但最近二三十年来个性化起名的也不少。

ShikiSuen commented 2 years ago

我再演示一下二十年前的两款老输入法是怎样输入「中华人民共和国中央军事委员会」这个未被预设收录的词的。 也还是一样完全不用选字。 使用的输入法是汉音输入法与98版微软新注音,系统是 Windows 98。

https://user-images.githubusercontent.com/3164826/142731238-5994362a-45e4-4c53-8868-25821a37129d.mp4

(没想到汉音输入法真的就是目前的大千智能注音输入法的鼻祖。)

lotem commented 2 years ago

保留長詞,有什麼實際影響嘛? 如果完全不用他,只打短的字詞,完全不會影響最終效果吧,那何必刪除呢。 畢竟記錄爲一個詞,也是有信息量的,不完全是冗餘。 今後只消在算法裏打開長詞聯想,這些詞就能發揮很大作用。 就算從效率與能耗上來說,查一個詞比通過語言模型計算出最優搭配得來同樣的詞組要經濟得多。

tumuyan commented 2 years ago

今後只消在算法裏打開長詞聯想

所以长词联想是在开发中对嘛

ShikiSuen commented 2 years ago

这个问题先关掉。 长词确实有助于防止在敲长句的时候出现长句句头或句中的突然的错字变化。