我很高興地宣布發布了我的第一個Python包裝, englishidioms
。該軟件包是一個強大的工具,用於識別句子中的英語習語,短語和短語動詞,其數據庫為22,209個唯一表達式。
背景:作為個人自然語言處理(NLP)項目的一部分,我發現需要一個能夠識別英語句子中慣用表達式的Python軟件包。令我驚訝的是,我找不到合適的解決方案,因此我決定從頭開始建造一個解決方案。
安裝:您可以使用pip輕鬆安裝軟件包: pip install englishidioms
如何使用它:
>>> from englishidioms import find_idioms
>>> sentence = "The plan didn't work, but I'll give you an a for effort for trying."
>>> results = find_idioms(sentence, limit=1)
>>> print(results)
[{'phrase': '*an A for effort', 'definition': 'acknowledgement for having tried to do something, even if it was not successful. (*Typically: get ~; give someone ~.) _ The plan didn’t work, but I’ll give you an A for effort for trying.'}]
爭論
sentence
(str) - 您要分析的英文句子(必需)。limit
(int) - 由匹配點(默認值:10)排序的最大結果數。html
(bool) - html標記中的返回短語和定義以保留字典中的原始格式(默認值:false)。span
(bool) - 句子中的返回匹配跨度(默認:false)。entry_range
bool) - 返回字典開始/結束行進行調試(默認:false)。entry_id
(bool) - 返回短語中的字典條目ID.json進行調試(默認:false)。它的工作原理(簡化):
該包裝是通過在“美國成語和短語動詞的麥格勞 - 希爾詞典”中解析所有字典條目開發的。通過使用Python庫,例如Python-docx和利用預定義的格式,我從每個條目中提取了關鍵點。這些要點包括:
常數:固定構成慣用表達的核心的單詞類別。變量:可以廣泛匹配的單詞的變量類。可選常數:單個慣用表達式中的其他可選單詞或短語。動詞:通常在慣用短語之前的動詞。
例如,考慮字典條目:
*(對某人) (死)鈴聲。外觀與其他人非常相似。 (*通常:be〜;看起來像〜。)_ _您確定我兄弟的死鈴是。 _他不是查克的鈴聲嗎?
對於此條目,我們確定:
通過每個調用“ Find_idioms”方法,搜索算法在22,209個字典條目中檢查了這些關鍵點,並考慮了語法變化和單詞順序,並將它們與給定句子匹配。然後,它返回匹配條目的列表。
表現:
我對本書的40,442個句子進行了測試,並在91%的情況下檢測到了正確的匹配詞典條目。此外,處理句子的平均執行時間約為3秒。
項目詳細信息
該項目分為幾個關鍵步驟:
1。獲取數據:
我們首先從“美國成語和短語動詞的McGraw-Hill詞典”中獲取源材料。您可以在此處以PDF格式訪問此資源的副本。
接下來,我們將PDF轉換為更可用的格式,即DOCX文檔,稱為“ clean-out-output.docx”。我們將其從兩列佈局重新格式化為單列文本。請注意,此文檔中未討論此轉換過程的技術細節。
2。準備數據:
我們經過一系列十二個步驟來處理並從'clean-out-output.docx'中完善數據,然後將其保存在'pherase.json。每個步驟均由特定的Python模塊管理:
在指定順序中運行這些模塊很重要,以創建最終版本的“ phrases.json”,這是來自'clean-out-output.docx的數據的綜合數據庫。在Windows CMD上,您可以使用此命令順序運行它們:
python A_breakitup.py && python A_splitrandom.py && python B_breakitup.py && python C_readit.py && python D_readit.py && python E_tidyup.py && python F_tidyup.py && python FF_manualoverride.py && python G_asterisk.py && python H_hyphenated_words.py && python I_getpatterns.py && python J_getwordforms.py && python K_getexamples.py
3。核心功能:
項目的核心是“ l_algorithm.py”模塊。它利用“ epers.json”將慣用表達式與英語句子匹配。該模塊對於軟件包至關重要,可以識別句子中的習語,短語和短語動詞。
該項目的核心是位於“ EnglishIdioms”目錄中的“ L_ALGORITHM.PY”模塊。它利用“ epers.json”將慣用表達式與英語句子匹配。將“ l_algorithm.py”和“ phrases.json”保持在“英語”目錄中的雙重目的:
縮小的包裝尺寸:通過隔離這些核心組件,我們將包裝在磁盤空間方面較小。這意味著用戶只需要安裝基本組件,就可以使軟件包更輕巧和高效。
最小化的依賴性:與整個軟件包相比,“ l_algorithm.py”和“ phrases.json”組合需要更少的外部依賴項。這簡化了最終用戶的安裝過程,減少了安裝其他庫和要求的需求,而這些庫和要求對於它們的特定用法可能不是必需的。
“英語”目錄還包括運行“ l_algorithm.py”所需的三個必要的NLTK資源。
通過採用這種簡化的方法,我們確保用戶可以快速輕鬆地訪問包裝的核心功能,而無需任何不必要的開銷。
4。檢查和測試:
為了確保“ l_algorithm.py”中的數據質量和搜索算法的有效性,我們使用三個其他模塊:
請注意,對於希望使用該軟件包的最終用戶,僅需要“ l_algorithm.py”和“ phrases.json”。其他模塊主要用於開發過程中的數據處理和驗證。
如何貢獻:
整個項目都是開源的,在GitHub上可用。隨時探索代碼,改進並為其開發做出貢獻。
免責聲明:此Python軟件包旨在為用戶提供訪問成語和短語動詞的訪問,因為它們出現在“美國成語和短語動詞”中的“ McGraw-Hill詞典”中。請注意,該軟件包未經詞典的版權持有人McGraw-Hill Companies,Inc。認可或授權。
版權通知: “美國成語和短語動詞的麥格勞 - 希爾詞典”是版權的材料,其使用符合McGraw-Hill Companies,Inc。的版權術語。此軟件包依賴於從個人副本中得出的內容這本書。
預期用途:此Python軟件包僅用於教育和研究目的,以及個人非商業用途。它不打算用於商業應用。
用戶責任:通過使用此Python軟件包,您必須承認您必須遵守版權法和原始工作中概述的使用條款。您只能將此軟件包用於個人,非商業目的。任何商業應用程序或本包輸出的分發都可能需要出版商McGraw-Hill Companies,Inc。的事先書面同意。強烈鼓勵打算定期使用此軟件包的用戶考慮購買自己的個人副本“美國成語和短語動詞的麥格勞- 希爾詞典”,以支持作者並遵守版權法。
支持作者:如果您打算將此包裝的內容用於商業目的,我強烈建議您從McGraw-Hill Companies,Inc。獲得必要的權限和許可證,以訪問一系列的成語和Phrasal動詞,請考慮購買您自己的個人副本“美國成語和短語動詞的McGraw-Hill詞典”。
責任:此Python包的創建者和維護者不得對侵犯版權或濫用包裹的任何責任負責。使用此軟件包時,用戶負責遵守所有法律和版權要求。
我鼓勵對該包的道德和合法使用,尊重版權持有人和作者的權利。請負責任地使用它。