中文命名實體識別有困難?在Amazon SageMaker上看如何基於TensorFlow來解決~

2021-03-02 AWS雲計算

經過前兩期的課程

相信大家已經能快速上手使用

Amazon SageMaker啦

那麼這一期的內容

少點理論多點實戰

快來跟小編一起學習實操

 如何使用 Amazon SageMaker 

 運行基於 TensorFlow 的中文命名實體識別 

在我們開始實操課程前,先來點擊以下視頻了解如何在 Amazon SageMaker 上使用多種有趣的深度學習框架 (TensorFlow, MXNet, PyTorch等),為你即將開始的編寫模型及從開源系統導入模型之旅打下基礎。

雖然 Amazon SageMaker 有著多種有趣的深度學習方式,但今天小編將首先就 TensorFlow 這一深度學習框架進行分享與講解(悄悄告訴你們,後續還有更多精彩,記得隨時關注哦~)。

那麼,到底什麼是 Tensor Flow ?

TensorFlow 是廣泛被用於開發大型深度神經網絡 (DNN) 的開源機器學習 (ML) 庫,此類 DNN 需要分布式訓練,並且在多個主機上使用多個 GPU。

Amazon SageMaker 是一項託管服務,可通過主動學習、超參數優化、模型分布式訓練、監控訓練進展,部署培訓模型作為自動擴展的 RESTful 服務,以及對並發 ML 實驗進行集中式管理,從標籤數據開始簡化 ML 工作流。

掃描下方二維碼獲取更多TensorFlow相關知識

本文將重點討論使用 Amazon SageMaker 進行分布式 TensorFlow 訓練。

好啦,前期鋪墊已經打好

硬核實操知識轟炸就要開啟

 如何使用 Amazon SageMaker 

 運行基於 TensorFlow 的中文命名實體識別 

接下來的實操教程時間

細節多,知識硬,內容夯

請千萬不要走神開小差~

利用業內數據構建知識圖譜是很多客戶正在面臨的問題,其中中文命名實體識別(Named Entity Recognition,簡稱 NER)是構建知識圖譜的一個重要環節。我們在與客戶的交流中發現,現有的 NER 工具(比如 Jiagu)對於特定領域的中文命名實體識別效果難以滿足業務需求,而且這些工具很難使用自定義數據集訓練。因此客戶迫切想使用業內最先進的算法在行業內數據集上進行訓練,以改進現有 NER 工具的不足。

本文將介紹如何使用 Amazon SageMaker 運行基於 TensorFlow 的中文命名實體識別。

命名實體識別,是指識別文本中具有特定意義的實體,主要包括人名、地名、機構名、專有名詞等。命名實體識別是信息提取、問答系統、句法分析、機器翻譯、知識圖譜等應用領域的重要基礎工具。

英語中的命名實體具有比較明顯的形式標誌(即實體中的每個詞的第一個字母要大寫),所以實體邊界識別相對容易,任務的重點是確定實體的類別。和英語相比,中文命名實體識別任務更加複雜,而且相對於實體類別標註子任務,實體邊界的識別更加困難。

NER 一直是自然語言處理(NLP)領域中的研究熱點,從早期基於詞典和規則的方法,到傳統機器學習的方法,到近年來基於深度學習的方法,NER 研究進展的大概趨勢大致如下圖所示。

早期的命名實體識別方法基本都是基於規則的。之後由於基於大規模的語料庫的統計方法在自然語言處理各個方面取得不錯的效果之後,一大批機器學習的方法也出現在命名實體類識別任務。

值得一提的是,由於深度學習在自然語言的廣泛應用,基於深度學習的命名實體識別方法也展現出不錯的效果,此類方法基本還是把命名實體識別當做序列標註任務來做,比較經典的方法是 LSTM+CRF 、 BiLSTM+CRF 。

我們知道,預訓練模型可以大幅提升計算機視覺的深度學習算法表現,而在 NLP 領域也是同理,預訓練語言模型可以有效提升文本分類、機器翻譯、命名實體識別等任務的效果。預訓練語言模型經歷了從詞嵌入(Word Embedding),到 BERT ,再到 ALBERT 的演進。

BERT 的全稱是 Bidirectional Encoder Representation from Transformers ,即雙向Transformer的編碼器(Encoder),因為解碼器(Decoder)是不能獲得要預測的信息的。模型的主要創新點都在預訓練方法上,即用了 Masked LM 和 Next Sentence Prediction 兩種方法分別捕捉詞語和句子級別的表示。

ALBERT(見參考資料4)基於 BERT ,但有一些改進,它可以在主要基準測試上獲得最先進的性能,而參數卻減少了 30 %。比如,對於 albert_base_zh ,它只有原始 BERT 模型的 10 %的參數,但是保留了主要精度。

本文將使用預訓練語言模型 ALBERT 做中文命名實體識別,該項目基於開源的代碼修改而來(本文代碼見參考資料 1 ,原始代碼見參考資料 2 ),使用 TensorFlow 框架開發,在下一節,我們將展示如何在 Amazon SageMaker 中進行該模型的訓練。

Amazon SageMaker中運行TensorFlow

本節將介紹如何使用 Amazon SageMaker 的自定義容器 ( Bring Your Own Container ,簡稱 BYOC )和自定義腳本( Bring Your Own Script ,簡稱 BYOS )兩種方式來運行 TensorFlow 程序的訓練任務。首先我們來看下如何在 Amazon SageMaker Notebook 上運行這個項目,然後再把它運行在 Amazon SageMaker 上。

在Amazon SageMaker Notebook上運行TensorFlow開原始碼

我們首先要創建  Amazon SageMaker Notebook  ,然後下載代碼和數據,最後運行代碼。如果一切運行正常,我們就可以進行下一步工作——將該 TensorFlow 代碼運行到 Amazon SageMaker 中了。

創建Amazon SageMaker Notebook

我們首先要創建一個 Amazon SageMaker Notebook ,筆記本實例類型最好選擇 ml.p2.xlarge ,這樣就可以使用 GPU 進行訓練的測試了,卷大小建議改成 10GB 或以上,因為運行該項目需要下載一些額外的數據。

筆記本啟動後,打開頁面上的終端,執行以下命令下載代碼:

執行以下命令下載和解壓數據(數據來源見參考資料3):

我們需要進入一個虛擬環境 tensorflow_p36 ,該環境預製了運行 TensorFlow 所需要的常用組件,運行 run_train.sh 進行訓練,命令如下:

如果出現下面的輸出,說明運行結果正常,在實例類型為 ml.p2.xlarge 的筆記本中,訓練速度可以達到 23 個樣本/秒,如果是其他類型實例,速度可能有差異。

自定義容器需要經歷準備 Dockerfile ,創建訓練的啟動腳本,創建鏡像並上傳到 Amazon ECR ,本地測試和 Amazon SageMaker 測試等步驟。完整執行過程見 tensorflow_bring_your_own.ipynb 。

我們首先需要準備 Dockerfile ,在其中安裝 TensorFlow 程序運行必須的環境,拷貝所有代碼到鏡像中。

這裡我們需要了解 Amazon SageMaker 對於容器內目錄結構的要求,具體如下圖所示,訓練所需代碼放到 /opt/ml/code 目錄下,訓練所需數據放到 /opt/ml/input/data 目錄下,訓練輸出的模型放到 /opt/ml/model 目錄下,訓練結果文件或者日誌文件放到 /opt/ml/output 目錄下,訓練超參數文件是由 Amazon SageMaker 自動生成的,在 /opt/ml/input/config 目錄下。

Amazon SageMaker 在訓練時默認的啟動腳本是 train ,您可以將自己代碼中的啟動腳本命名為 train ,但我們更建議您使用我們提供的啟動腳本 train ,該腳本是基於 Python 的,可以幫助您解析傳入的超參數,並調用您代碼中的實際啟動腳本。

在準備好 Dockerfile 和啟動腳本後,我們可以使用 build_and_push.sh 這個腳本創建鏡像並上傳到 Amazon ECR 。注意這個過程可能需要進行很多次,因為我們不可避免地要修改 Dockerfile 或者 TensorFlow 程序以使得它們可以正常工作。如果尚未調試完成,我們可以暫時不執行該腳本的最後一句 docker push ${fullname} ,以避免頻繁上傳鏡像到 Amazon ECR 。

在創建鏡像完成後,我們可以使用 Amazon SageMaker 的本地模式進行本地測試:

第一步,執行 utils/setup.sh 來初始化本地模式。

第二步,指定執行的角色,這裡我們假設您是在 Amazon SageMaker Notebook 上執行的,如果是其他環境,您可能需要手動指定角色的 ARN 。

第三步,設定超參數,這裡需要對應到您程序中所需的超參數。

第四步,設定訓練機型為 local 或者 local_gpu (支持 GPU )。

第五步,創建 Estimator,這裡需要傳入之前獲得的角色、訓練機型、機器數量、鏡像名稱、超參數等。

第六步,啟動訓練,這裡需要傳入訓練數據的位置,在本地模式下,訓練數據的位置可以設置成本地路徑。

訓練啟動後,我們可以看到訓練的日誌輸出,以及監控本機的 GPU 、 CPU 、內存等的使用率等情況,以確認程序可以正常工作。

如果在此過程中需要進入正在運行的容器內調試,我們可以使用 docker ps 命令獲取當前正在運行的容器 ID ,並使用 docker exec -it <CONTAINER ID> /bin/bash 進入容器內進行調試。

在本地測試和上傳鏡像到 Amazon ECR 完成後,我們可以使用 Amazon SageMaker 進行測試:

第一步,上傳數據到 Amazon S3 ,獲取鏡像在 Amazon ECR 的地址。

第二步,指定執行的角色,這裡我們假設您是在 Amazon SageMaker Notebook 上執行的,如果是其他環境,您可能需要手動指定角色的 ARN 。

第三步,設定超參數,這裡需要對應到您程序中所需的超參數。

第四步,設定訓練機型為 ml.p2.xlarge (支持 GPU )。

第五步,創建 Estimator ,這裡需要傳入之前獲得的角色、訓練機型、機器數量、鏡像地址、超參數等。

第六步,啟動訓練,這裡需要傳入訓練數據的位置,在 Amazon SageMaker 模式下,訓練數據的位置需要設置成 Amazon S3 路徑。

訓練啟動後,我們可以在 Amazon SageMaker 控制臺看到這個訓練任務,點進詳情可以看到訓練的詳情,日誌輸出,以及監控機器的 GPU 、 CPU 、內存等的使用率等情況,以確認程序可以正常工作。

在此過程中我們無法進入正在運行的容器內調試,您可以將儘量多的日誌列印出來,或者輸出到 /opt/ml/output 路徑下,該路徑下的所有文件在訓練完成後會被自動打包成 output.tar.gz 放到設定好的位於 Amazon S3 的輸出路徑下。

本文所示程序使用了 MSRA 公開的中文實體識別數據集進行訓練,在訓練 3 輪之後,最優的 F1 值就可以達到 0.948345 ,屬於比較領先的結果。

使用 BYOS 的方法和 BYOC 的不同之處在於:BYOC 是使用用戶自己創建的鏡像來運行程序,更適用於用戶對鏡像自定義程度較高的使用情景;而 BYOS 是使用預先構建好的鏡像,只是傳入用戶自己的代碼來運行程序,不需要用戶自己調試鏡像,更適用於比較簡單的使用情景。

由於不需要編譯自定義鏡像,我們可以直接進行本地測試和 Amazon SageMaker 測試,完整流程見tensorflow_script_mode_quickstart.ipynb。

我們可以使用 Amazon SageMaker 的本地模式進行本地測試:

第一步,執行 utils/setup.sh 來初始化本地模式。

第二步,指定執行的角色,這裡我們假設您是在 Amazon SageMaker Notebook 上執行的,如果是其他環境,您可能需要手動指定角色的 ARN 。

第三步,設定超參數,這裡需要對應到您程序中所需的超參數。

第四步,設定訓練機型為 local 或者 local_gpu (支持GPU)。

第五步,創建一個名為 TensorFlow 的 Estimator ,這裡需要傳入訓練入口腳本(entry_point)、原始碼路徑(source_dir)、之前獲得的角色、訓練機型、機器數量、 TensorFlow 版本、 Python 版本、超參數等。

第六步,啟動訓練,這裡需要傳入訓練數據的位置,在本地模式下,訓練數據的位置可以設置成本地路徑。

這裡我們可以注意到 estimator.fit ()傳入的參數與 BYOC 略有不同,這兩個寫法其實是等價的,事實上,這裡的寫法更規範一些,按照 Amazon SageMaker 的文檔,輸入數據可以有多個通道(Channel),默認的通道是 training ,在本文的代碼中,訓練、驗證等過程其實都是從 training 通道中讀取的數據,所以更規範的做法是,我們應該額外增加一個通道 validation ,用來存放驗證數據。

訓練啟動後,我們可以看到訓練的日誌輸出,以及監控本機的 GPU、CPU 、內存等的使用率等情況,以確認程序可以正常工作。

如果在此過程中需要進入正在運行的容器內調試,我們可以使用docker ps命令獲取當前正在運行的容器ID,並使用docker exec -it <CONTAINER ID> /bin/bash進入容器內進行調試。另外,我們使用docker images命令可以看到Amazon SageMaker自動下載了一個名為763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:1.15.2-gpu-py3的鏡像,該鏡像是由Amazon SageMaker預編譯的。

在本地測試完成後,我們可以使用Amazon SageMaker進行測試:

第一步,上傳數據到Amazon S3。

第二步,指定執行的角色,這裡我們假設您是在Amazon SageMaker Notebook上執行的,如果是其他環境,您可能需要手動指定角色的ARN。

第三步,設定超參數,這裡需要對應到您程序中所需的超參數。

第四步,設定訓練機型為ml.p2.xlarge(支持GPU)。

第五步,創建一個名為TensorFlow的Estimator,這裡需要傳入訓練入口腳本(entry_point)、原始碼路徑(source_dir)、之前獲得的角色、訓練機型、機器數量、TensorFlow版本、Python版本、超參數等。

第六步,啟動訓練,這裡需要傳入訓練數據的位置,在Amazon SageMaker模式下,訓練數據的位置需要設置成Amazon S3路徑。

訓練啟動後,我們可以在Amazon SageMaker控制臺看到這個訓練任務,點進詳情可以看到訓練的詳情,日誌輸出,以及監控機器的GPU、CPU、內存等的使用率等情況,以確認程序可以正常工作。

在這裡,source_dir我們設置的是本地代碼路徑,Amazon SageMaker會自動將該路徑下的所有代碼和數據拷貝進容器中。此外,BYOS模式還支持git路徑作為代碼路徑,使用方法如下:

但是,由於本文所用代碼需要ALBERT預訓練數據,而該數據不包含在git內,所以我們需要對代碼進行改造,以使得在代碼內下載並解壓數據,才能夠正常訓練。這裡我們不再展示如何操作,感興趣的讀者可以自行嘗試。

本文講解了如何使用Amazon SageMaker運行基於TensorFlow的中文命名實體識別,其中算法部分是使用預訓練語言模型ALBERT做中文命名實體識別。

本文展示了如何把一個已有項目快速運行到Amazon SageMaker上,如果您想使用到Amazon SageMaker的更多高級用法,需要對已有項目進行改造,比如支持實時推理、批量推理、斷點重新訓練等,具體可以查看Amazon SageMaker的文檔。

本文所演示的使用方法是基於單機單卡的,Amazon SageMaker 提供基於 Docker 的簡化分布式 TensorFlow 訓練平臺,如果要將程序擴展到多機多卡進行訓練,可以參考其他相關博客。

1. 本文代碼:

https://github.com/whn09/albert-chinese-ner

2. 使用預訓練語言模型ALBERT做中文NER:

https://github.com/ProHiryu/albert-chinese-ner

3. 海量中文預訓練ALBERT模型:

https://github.com/brightmart/albert_zh

4. ALBERT論文:

https://arxiv.org/pdf/1909.11942.pdf

5. 命名實體識別 – Named-entity recognition | NER:

https://easyai.tech/ai-definition/ner/

想要入門 Amazon SageMaker 的童靴

看!過!來!

服務抵扣券直充福利

在!等!你!

自 2020 年 4 月 30 日起至 2020 年 9 月 30 日,AWS 為機器學習應用提供專屬福利,1000 元人民幣 / 200 美元 服務抵扣券直充到 AWS 帳戶,祝您輕鬆體驗 Amazon SageMaker 服務。

掃描下方二維碼即可訪問中國區申請入口

(1000元人民幣服務抵扣券)

掃描下方二維碼即可訪問國際區申請入口

(200美元服務抵扣券)

相關焦點

  • TensorFlow與中文手寫漢字識別
    具體在tf如何做數據的讀取可以看看reading data in tensorflow這裡我會拿到所有的數據集來做訓練與測試,算作是對鬥大的熊貓上面那篇文章的一個擴展。Batch Generate數據集來自於中科院自動化研究所,感謝分享精神!!!
  • 基於OpenCV與tensorflow實現實時手勢識別
    公眾號【OpenCV學堂】,致力於計算機視覺開發技術傳播,原創技術文章200+的,涉及OpenCV開發、tensorflow開發、模型解析與訓練、傳統圖像處理算法解析,對圖像與視覺感興趣的強烈推薦關注!
  • TensorFlow 與中文手寫漢字識別
    具體在tf如何做數據的讀取可以看看reading data in tensorflow這裡我會拿到所有的數據集來做訓練與測試,算作是對鬥大的熊貓上面那篇文章的一個擴展。Batch Generate數據集來自於中科院自動化研究所,感謝分享精神!!!
  • NLP實戰-中文命名實體識別
    關注並星標,更多乾貨,第一時間送達來源:知乎    原文:見文末閱讀原文    作者:MaggicQ編輯整理:python遇見NLP(公眾號)僅做學術分享,侵刪前言:本文章將通過pytorch作為主要工具實現不同的模型(包括HMM,CRF,Bi-LSTM,Bi-LSTM+CRF)來解決中文命名實體識別問題
  • 【官方教程】TensorFlow在圖像識別中的應用
    人們毫不費力地就能區分出獅子和美洲虎,閱讀符號,或是識別面孔。但是這些任務對於計算機而言卻是一個大難題:它們之所以看上去簡單,是因為我們的大腦有著超乎想像的能力來理解圖像。在過去幾年裡,機器學習在解決這些難題方面取得了巨大的進步。其中,我們發現一種稱為深度卷積神經網絡的模型在困難的視覺識別任務中取得了理想的效果 —— 達到人類水平,在某些領域甚至超過。
  • TensorFlow開發者證書 中文手冊
    ,我整理並製作了這個中文手冊,請大家多多指正,有任何問題和建議都可以在文末聯繫到我~同時,感謝各位大牛們期間對我的幫助和指導!要獲得證書需要理解如何使用計算機視覺、卷積神經網絡、自然語言處理以及真實世界的圖像數據和策略來構建TensorFlow模型。
  • 基於Tensorflow\keras銀行卡識別
    :機器學習算法與Python精研 ,ID:AITop100】,經微信公眾號授權轉載,如需轉載原文作者聯繫來自:GitHub測試環境Ubuntu 18.04python 3.6.7numpy 1.16.4tensorflow-gpu
  • 「NLP實戰系列」Tensorflow命名實體識別實戰
    因此,NLP專欄計劃推出一個實戰專欄,讓有興趣的同學在看文章之餘也可以自己動手試一試。本篇介紹自然語言處理中一種非常重要的任務:命名實體識別。因為最常見的是Bilstm+CRF模型進行實體識別,本文介紹介紹另外一種有效的模型,Dilated-CNN+CRF模型,但是兩種模型的代碼都會給出。
  • OpenCV+Tensorflow實現實時人臉識別演示
    相比其他的深度學習方法,FaceNet僅需要128個字節來表示一張臉。FaceNet網絡設計目標任務有如下1.驗證-驗證是否為同一張臉2.識別-識別是否為同一個人3.聚類-發現人臉具有相同之處的人關於什麼是神經網絡嵌入,這個解釋比較複雜,簡單的說神經網絡的嵌入學習可以幫助我們把離散變量表示為連續的向量,在低維空間找到最近鄰,tensorflow中的word2vec就是用了嵌入。
  • NLP入門篇:命名實體識別
    中文命名實體識別NER 的效果評判主要是看實體的邊界是否劃分正確以及實體的類型是否標註正確。相對於英文 NER ,中文 NER 有以下難點:命名實體的構成規律複雜。如中文人名識別可以細分為中國人名識別、音譯人名識別等;另外,機構名的組成方式最複雜,種類繁多,規律不統一。嵌套情況複雜。如人名中嵌套著地名,地名中嵌套著人名、機構名。長度不確定。相對於人名、地方,機構名的長度和邊界更難以識別,中國人名一般為 2-4 字,常用地方也大多為 2-4 字,但機構名長度變化範圍極大。
  • 用TensorFlow構建一個中文分詞模型需要幾個步驟
    這裡面我們主要以後者為參考。中文分詞往往有兩個直接目標,一個是把詞彙分開,另一個給每個詞以詞性,例如動詞、名詞,或者更細分的地點名詞、機構名詞等等。如果只是分詞,是中文分詞任務(SEG,Chinese Segmentation),如果需要詞性,也可以被稱為詞性標註任務(POS,Part os Speech)任務。
  • 機器學習進階筆記| 利用TensorFlow實現智能數字識別
    TensorFlow是Google基於DistBelief進行研發的第二代人工智慧學習系統,被廣泛應用於語音識別、圖像識別等多項機器深度學習領域。其命名來源於本身的運行原理:Tensor(張量)意味著N維數組,Flow(流)意味著基於數據流圖的計算,TensorFlow代表著張量從圖象的一端流動到另一端,是將複雜的數據結構傳輸至人工智慧神經網中進行分析和處理的過程。
  • TensorFlow 中文資源全集,學習路徑推薦
    https://gitee.com/fendouai/Awesome-TensorFlow-Chinese很多內容下面這個英文項目:Inspired by https://github.com/jtoy/awesome-tensorflow官方網站官網:https://www.tensorflow.org/中文:https://tensorflow.google.cn
  • 基於Tensorflow的神經網絡解決用戶流失概率問題
    目前專注於基於深度學習及集成模型下的用戶行為模式的識別。用戶流失一直都是公司非常重視的一個問題,也是AAARR中的Retention的核心問題,所以各大算法競賽都很關注。比如最近的:KKBOX的會員流失預測算法競賽(https://www.kaggle.com/c/kkbox-churn-prediction-challenge),如何能夠搭建一個精準的模型成了大家探索的重要問題。
  • 利用Lattice LSTM的最優中文命名實體識別方法
    ,介紹了一種新型中文命名實體識別方法,該方法利用 Lattice LSTM,性能優於基於字符和詞的方法。與基於字符的方法相比,該模型顯性地利用詞和詞序信息;與基於詞的方法相比,lattice LSTM 不會出現分詞錯誤。這篇論文已被 ACL 2018 接收。作為信息抽取的一項基本任務,命名實體識別(NER)近年來一直受到研究人員的關注。該任務一直被作為序列標註問題來解決,其中實體邊界和類別標籤被聯合預測。
  • TensorFlow極速入門
    一、前言目前,深度學習已經廣泛應用於各個領域,比如圖像識別,圖形定位與檢測,語音識別,機器翻譯等等,對於這個神奇的領域,很多童鞋想要一探究竟,這裡拋磚引玉的簡單介紹下最火的深度學習開源框架 tensorflow。
  • tensorflow極速入門
    一、前言目前,深度學習已經廣泛應用於各個領域,比如圖像識別,圖形定位與檢測,語音識別,機器翻譯等等,對於這個神奇的領域,很多童鞋想要一探究竟,這裡拋磚引玉的簡單介紹下最火的深度學習開源框架 tensorflow。本教程不是 cookbook,所以不會將所有的東西都事無巨細的講到,所有的示例都將使用 python。那麼本篇教程會講到什麼?
  • 【計算機系統應用】 (第五十五期)基於BERT-BiLSTM-CRF模型的中文實體識別
    在中文實體識別任務中, 其難點主要表現在以下幾個方面: (1)命名實體類型與數量眾多, 而且不斷有新的實體湧現, 如新的人名、地名等; (2)命名實體構成結構較複雜, 如組織機構存在大量的嵌套、別名以及縮略詞等問題, 沒有嚴格的命名規律; (3)命名實體識別常常與中文分詞、淺層語法分析等相結合, 而這兩者的可靠性也直接決定命名實體識別的有效性, 使得中文命名實體識別更加困難.
  • 中文命名實體識別算法 Lattice LSTM
    中文命名實體識別 (NER) 算法按照輸入的類型,可以大致分為 Character-based (字符) 和 Word-based (單詞) 兩種。基於字符和基於單詞的 LSTM 模型如上圖所示,中文命名實體識別 NER 主要有 Character-based (基於字符) 方法和 Word-based (基於單詞) 方法:基於單詞的方法首先會利用分詞模型對句子分詞
  • 使用Python+Tensorflow的CNN技術快速識別驗證碼
    目前,在圖像識別和視覺分析研究中,卷積神經網絡(CNN)技術的使用越來越多。Tensorflow 是由 Google 團隊開發的神經網絡模塊,短短幾年間, 就已經有很多次版本的更新。最近我也在自學Tensorflow,想通過卷積神經網絡快速識別整塊驗證碼(不分割字符)。期間也碰到許多問題,諸如軟體安裝,Tensorflow版本差異等。