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