因系統中用到了ahocorasick,但是程序跑起來有BUG,故而10.1假期研究了一下,趟過幾個坑,分享一下。
一、安裝過程中的坑
直接安裝pip install pyahocorasick 是會報錯的:
building 'ahocorasick' extension
error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio
": https://visualstudio.microsoft.com/downloads/
需要本機安裝有 Microsoft Visual C++ 14.0及以上的版本支持,網上有無數安裝介紹,下載:visualcppbuildtools_full.exe 有各種安裝方式,我測試下來,都不行缺少包安裝一半,有方法介紹要FQ的情況下,能完成安裝,沒試過。也測試了,MicrosoftBuildTools2015_downcc,能成功安裝還是不行,有介紹conda install -i XXXXX 我都試了,conda是安裝成功了,pycharm中import還是不行。
最后嘗試直接安裝Visual 2019.就是https://visualstudio.microsoft.com/downloads/ 這里下的,安裝過程中勾選了:
我還選擇了
這個是否選擇應該是關系不大。安裝完以后,pip install pyahocorasick 就成功了。
二、 提示not listed in the project requirements
安裝完以后,窗口上還有如下的提示:
Package containing module 'ahocorasick' is not listed in the project requirements
這個主要是lib中沒顯示庫
其他包都是成雙成對的出現的,就它只有一個info,實際不影響。
三、沒看到原代碼,只看到空函數和pass過程
我剛開始也是被驚到了,是不是沒安裝成功,后來代碼測試驗證過程沒問題,經查找網上資料,說是pycharm創建的仿制品。參考來源:
python buildin 中的一些類中為什么方法的內容都是pass?
四、關於ahocorasick 的使用
這個算法使用起來還是很簡單的,邏輯上是文本中查詞,所以先要構建一個詞庫,ac算法中有addword方法,將詞庫構建成一個ac的數組對象。使用時輸入一串文本 與詞庫比較,返回挑選命中的詞。
即:在文本中查找與詞庫匹配的詞,且必須完全匹配。
詳細使用有文檔:pyahocorasick — ahocorasick documentation
使用過程介紹比較清晰的blogs:pyahocorasick使用
原理介紹的比較清楚的看這個: 深入理解Aho-Corasick自動機算法