如題,簡單一點的功能是如何對一份英文 API 開發文件進行詞頻的統計? (文件可能是多個 html 文件,也可能是 chm 文件,不是簡單的 txt 文字);
複雜一點的需求是,因為開發文件涉及很多類別名稱、函數或方法名稱等,單字可能會連在一起,統計時最好能夠分開(這個可以根據命名規則來分開);
再複雜一點的需求是,因為單純統計一個文件的詞頻沒多大的實際意義,如何將統計後的單字再加工處理:
剔除一些簡單的,並對開發來說沒多大意義的單詞,如 the, are, to, is……
分析出裡面涉及電腦的專業名詞、程式設計中特定意義的單字或程式語言的關鍵字(涉及文件對應的不同語言);
對最終分析出的單字標註出解釋(中文,可以透過第三方 API)…
#如果開發具有上述功能的軟體,具體需要涉及哪些技術? 歡迎提供你的想法…
呃,其實我的痛點是,看一份英文文檔時,有太多不懂的單詞,經常要去查單詞,效率太低了,如果有一個工具可以統計分析出一份文件的詞彙,就可以在看文檔前大致熟悉詞彙的意思,提高效率;而且對於開發時,命名也有幫助……
修改備註:
分開連在一起的單字確實不是分詞技術,之前說錯了;
原問題提到的運用機器學習,我的想法是這樣的:一個具有機器學習的軟體大量閱讀編程的開發文檔,找出裡面的專業術語,使整個功能的實現更加智能化……當然這是我瞎想的,不一定對,不喜勿噴;
#最後,我提到的看英文文件的問題,誰都有剛開始看不懂,效率低的階段,誰不知道多看,效率就會慢慢提高?道理大家都懂…但是,這個不是我們討論的重點,我只是有這麼個想法,提出來讓大家討論下而已
#另外,提的問題如果有錯,可以留言,我會修改,能不踩嗎?
準備考研,很久沒寫過程式碼了,不過大概思路應該是:
清洗過濾:對於html,先把內容過濾出來,你可以自己寫正規或用找點別人寫好的
單字分詞:先用空格等常見的分隔符號對單字過濾,再根據不同的語言命名規範找出一個個的單字
過濾常用字:在網路上應該可以找到英文常用字的文件,配對
WordCount:可以直接單純的用python自己實現MapReduce的過濾,或是Hadoop、Spark之類的也可以
到此為止就完成了過濾簡單詞的單詞統計了
關於統計出計算機相關詞,你需要網上下載計算機相關詞彙的數據文件,直接匹配即可
需要給出解釋的話,調用有道、百度翻譯的api即可,不過這些API可能有次數上限,我沒用過。
以上所說步驟都沒有考慮效率的問題,如果需要考慮效率問題,還需要使用到些演算法或直接使用別人寫好的類別庫。
關於你所說到的機器學習,這裡的需求暫時不需要、且沒必要使用到。
最後:我還是想說,想讀懂文檔的最快的辦法就是多讀文檔,堅持讀下來,你會發現讀文檔的速度會越來越快。不過把這個當成練手的項目,也算是做了點有趣的事情。
關於問題修改後的回應:
你提及的機器學習,目前大體上是有監督式和非監督式,但根據你的提及:
如果採用監督式學習那必然需要語料資料的支持,而如果已經有語料資料何不直接用字串匹配實現?
當採用非監督式學習,目前我也是初學,依我的理解,似乎只能達到聚類的效果,若想自動識別是計算機術語,必然還是需要人工標註或者數據的支持
如果再往下深究,就需要好好研究NLP了
我覺得你好像對機器學習感興趣,但我感覺這個不是機器學習練手的一個好項目。
這個應該不叫英語分詞,分詞應該指以句子成分來劃分。連在一次的變數名稱可以考慮以常見的命名方式識別,例如大小寫的Camel-Case、底線分割的 Underscores 等。
分詞可以找各種 Word Splitting 函式庫,python 應該有很多。計算機的專業名詞下載詞庫,單字提取後跟詞庫匹配得到釋義。
但其實即使做出來也不一定能更方便閱讀,光看單字有點曲線救國的感覺,很可能根本看不進去。電腦文章的詞彙量不多,一回生兩回熟,優化查詞體驗比較妥,推薦 collins雙解 結合 Macmillan ,MDict 或歐路字典都可以載入。 Chrome 也可以裝 Saladict 沙拉查詞。