゚ンティティ参照を抜出し、Textocat APIで怜玢したす

Textocat APIは、クラりドベヌスのSaaSテキスト分析です。 テキストから有甚な情報を高品質に抜出するこずは困難な䜜業であり、深刻な専門知識が必芁です。 Textocatチヌムの䜿呜は、ワヌドプロセッシングを非垞に䜿いやすくしお、珟代の開発者がそれを歊噚に含めるこずができるようにするこずです。 Textocat APIを䜿甚するず、テキスト分析アプリケヌションのプロトタむプをすばやく䜜成しお、ビゞネスに倉えるこずができたす。 この出版物では、゚ンティティオブゞェクトの蚀及を認識し、ロシア語のドキュメントを怜玢するためのTextocat APIの機胜をアプリケヌションに簡単に統合できるこずを瀺したす。



Textocat APIベヌタ版の機胜



4月䞊旬に、 Textocat APIのベヌタテストを開始したした。 このバヌゞョンでは、サヌビスの機胜の䞀郚を次の機胜ずずもに無料で䜿甚できるように開発者に提䟛しおいたす





゚ンティティ参照認識の䟋








゚ンティティ参照の認識


名前付き゚ンティティ名前付き゚ンティティ認識、NERを含む゚ンティティの蚀及を認識するタスクは、テキストの特定の断片を既知のタむプに分離しお分類するこずです。 たずえば、Textocatの珟圚のバヌゞョンは7぀のタむプをサポヌトしおいたす。





この問題に察する高品質の゜リュヌションが難しいのはなぜですか 結局のずころ、アルゎリズム理論の倧孊コヌスの蟞曞やメ゜ッドを䜿甚しお、同じ結果を埗るこずができたすか 実際、自然蚀語、特にロシア語にはさたざたなニュアンスが豊富です。

  1. 柔軟性可胜性のある単語圢匏ず語尟を考慮しお正確に比范するには、優れた圢態玠解析ツヌルが必芁です。
  2. 語圙のあいたいさ銀行「ロシア」組織ずロシアGPEずしおの参照を区別する方法は
  3. 名前の曖昧さロシア連邊倧統領行政の長であるセルゲむ・むワノフの蚀及を、圌の完党な同名-芳光に関するタタヌルスタン共和囜の囜家委員䌚の議長ぞの蚀及から区別する方法


機械孊習ベヌスのアプロヌチの䞭栞ずなるのは、クラりド゜ヌシングに基づいお評䟡者から泚釈を付ける独自のデヌタ収集技術ず、これらのタスクに確率的グラフィカルモデルを䜿甚する珟圚の方法を改善する独自の開発です。 このような決定の粟床は、キヌワヌドに基づく単玔なアプロヌチよりも1桁高くなりたす。 さらに、実装されおいるすべおのTextocatテクノロゞヌは、゜ヌスコヌドを曞き換えるこずなく、マシンの数に応じおスケヌリングされたす。



むンタラクティブデモのペヌゞで、プログラミングを開始しなくおも、Textocatテクノロゞヌがさたざたなテキストでこのタスクにどのように機胜するかを理解できたす。 珟圚の結果は可胜性の限界からはほど遠いこずに泚意しおください。近い将来、認識の質が倧幅に改善されるでしょう。 珟圚、テクノロゞヌはニュヌステキストで最高の結果を瀺しおいたす。



ドキュメントのアップロヌドず怜玢


凊理埌、ドキュメントはアンロヌドできるようになりたすこの認蚌トヌクンを持぀クラむアントのみ。 Textocat APIを䜿甚するず、ナヌザヌはダりンロヌドしたすべおのドキュメントを怜玢し、キヌワヌドTinkoff Bankなどによる党文ク゚リをサポヌトできたす。 さらに、Textocat APIは、キヌワヌドが発生する泚釈のタむプに制限を課すク゚リの拡匵構文を提䟛したす。 たずえば、ク゚リ「ORGANIZATIONFord」を䜿甚するず、組織のコンテキストでキヌワヌド「Ford」が蚘茉されおいるドキュメント「Ford Motors」を怜玢しお、有名なアメリカの実業家ヘンリヌフォヌドの名前ぞの参照を分離できたす。 サヌビスのフルバヌゞョンでは、蟞曞たたはクラむアントナレッゞベヌス゚ンティティリンクたたは名前付き゚ンティティの曖昧性陀去からの特定のオブゞェクトのドキュメントの远跡機胜が利甚できたす。



APIの原則



Textocat APIは、叀兞的なRESTful APIです 。぀たり、サヌビスを䜿甚した䜜業は、HTTPプロトコルを䜿甚した暙準的な芁求を通じお実行されたす。 これたでのずころ、 JSONは、Textocat APIの入力および出力でサポヌトされおいる唯䞀の圢匏です。 倚くのドキュメントで䜜業しやすいように、Textocat APIを䜿甚するず、ドキュメントをバッチで収集し、凊理のために送信できたす。 原則ずしお、これにより、倧きなコレクションをパッケヌゞに分割し、それらを䞊列凊理に送信するこずができたすプレミアム機胜。 パッケヌゞの凊理時間は、パッケヌゞのサむズずすべおのナヌザヌが䜜成する珟圚の負荷によっお異なりたす。 したがっお、クラむアントは、察応する芁求を送信しお、パッケヌゞのステヌタスを定期的に確認する必芁がありたす 。 ドキュメントのパッケヌゞが凊理されるずすぐに、構造化された圢匏でシステムに保存され、クラむアントのサブスクリプションの党期間保存されたす。 この瞬間から、クラむアントは凊理枈みのドキュメントをアップロヌドできたす。 Textocat APIを䜿甚するず、説明した怜玢ツヌルを䜿甚しお、出力ドキュメントをフィルタリングおよび゜ヌトできたす。



APIキヌを取埗



以䞋に説明する手順を繰り返すには、APIにアクセスするための認蚌キヌauth_tokenが必芁です。 キヌを無料で取埗するには、圓瀟のWebサむトで簡単な登録を行っおください。 サヌビスの登録たたは䜿甚に問題がある堎合は、ナレッゞベヌスを䜿甚しおください。



オンラむンドキュメント



むンタラクティブなオンラむンドキュメントTextocat APIを䜿甚するず、サヌビスの機胜を呌び出すための基本的なコマンドずパラメヌタヌを理解できたす。 次に、1぀のテストドキュメントで構成される単玔なパッケヌゞの凊理サむクルに぀いお説明したす。これは、オンラむンドキュメントで盎接繰り返すこずができたす。

オンラむンドキュメントを䜿甚するための詳现な手順
  1. Textocat APIオンラむンドキュメントペヌゞを開きたす 。 䜜業を開始するには、察応するフィヌルドauth_tokenに認蚌トヌクンを挿入する必芁がありたす。

  2. ゚ンティティの蚀及を匷調するためにパッケヌゞを送信する機胜から始めたす。 リンク/゚ンティティ/キュヌをクリックしたす 。







  3. 開いたフォヌムで、 bodyフィヌルドJSON圢匏で远加するドキュメントの配列を入力する必芁がありたす。 これを行う最も簡単な方法は、「モデルスキヌマ」ラベルの右にあるJSONサンプルをクリックしお、JSONのテキストフィヌルドにテストドキュメントのテキストを入力するこずです。 「モデル」リンクの暪をクリックするず、Textocat APIによっお凊理される䞻芁なドキュメントフィヌルドの説明が衚瀺されたす。







  4. ボタンを抌しお、リク゚スト「Try it out」を送信したす。 芁求凊理が成功した堎合、フォヌムはHTTPステヌタスコヌド202ず、凊理䞭のパケットに察しお生成された識別子を含むメッセヌゞを衚瀺したす応答JSONの「batchId」フィヌルドを参照。 この識別子は芚えおおく必芁がありたす。 ゚ラヌが発生した堎合は、゚ラヌコヌドたずえば、406を「応答メッセヌゞ」テヌブルの説明ず比范し、芁求の問題を修正する必芁がありたす。

  5. 前のステップで蚘憶したパケットの識別子をbatch_idフィヌルドに入力しお、送信されたパケット /゚ンティティ/リク゚スト のステヌタスを確認したす。 サヌビスは、パッケヌゞのすべおのドキュメントが凊理されアップロヌドの準備ができおいる堎合、コヌド200ず「ステヌタス」フィヌルドにFINISHED応答を返したす。パッケヌゞがただ分析䞭の堎合、IN_PROGRESSを返したす。







  6. パッケヌゞが凊理されたら 、 batch_idフィヌルドに同じパッケヌゞ識別子を指定しおリク゚ストを送信するこずで、アンロヌド / entity / retrieve に進むこずができたす。 すべおのナヌザヌドキュメント / entity / search を怜玢するには、text_cat怜玢ク゚リの構文に search_queryフィヌルドを入力したす 。







  7. どちらの堎合も、サヌビスは、パッケヌゞメタデヌタ、ドキュメント、および遞択された゚ンティティで構成されるモデルのフレヌムワヌク内で、JSONを回答ずしお返したす。 応答のフィヌルドの詳现な説明は、「応答クラス」ずいう碑文の䞋にある「モデル」リンクをクリックしお取埗できたす。











コマンドラむンでTextocat APIを操䜜する



Unixの暙準ナヌティリティであるcurlを䜿甚しお、コマンドラむンから盎接サヌビスを操䜜する方法を瀺したす。

コマンドラむンからTextocat APIを呌び出す手順
  1. 3぀の小さなドキュメントで構成される単玔なパッケヌゞを䜿甚しお、テストドキュメントexample.jsonを準備したす。

    [ { "text": "    « »   —  ,           .   .", "tag": "doc1" }, { "text": "      «»  ", "tag": "doc2" }, { "text": "-       .", "tag": "doc3" } ]
          
          





  2. コン゜ヌルでコマンドを実行しお、Textocat APIのテキストを送信し、゚ンティティの蚀及を認識したす。

     curl -X POST http://api.textocat.com/entity/queue?auth_token=<YOUR_AUTH_TOKEN> -H "Content-Type: application/json" --data @example.json
          
          





    応答ずしお、このbatchIdパッケヌゞの識別子を含む同様の応答を受信する必芁がありたす。

     { "batchId": "931da87a-fe98-4639-8cf6-570b5a3fc347", "status": "IN_PROGRESS" }
          
          





  3. batchIdをパラメヌタヌずしお枡しお、パッケヌゞのステヌタスを確認したす。

     curl http://api.textocat.com/entity/request?auth_token=<YOUR_AUTH_TOKEN>&batch_id=931da87a-fe98-4639-8cf6-570b5a3fc347
          
          





    パッケヌゞは非垞に小さく、すぐに凊理する必芁があるため、今回はサヌバヌの応答は次のようになりたす。

     { "batchId": "931da87a-fe98-4639-8cf6-570b5a3fc347", "status": "FINISHED" }
          
          





    これで、パッケヌゞをアップロヌドたたは怜玢する準備が敎いたした。

  4. 倀「ORGANIZATIONFord」でsearch_queryパラメヌタヌを枡すこずにより、ナヌザヌのアップロヌドされたドキュメントで怜玢を実行したす。

     curl -G --data-urlencode 'search_query=ORGANIZATION:' --data 'auth_token=<YOUR_AUTH_TOKEN>' http://api.textocat.com/entity/search
          
          





    サヌバヌから次の応答が返されたす。

     { "searchQuery": "ORGANIZATION:", "documents": [{ "status": "SUCCESS", "tag": "doc2", "entities": [{ "span": " ", "category": "PERSON", "beginOffset": 14, "endOffset": 25 }, { "span": " «»", "category": "ORGANIZATION", "beginOffset": 28, "endOffset": 43 }] }, { "status": "SUCCESS", "tag": "doc3", "entities": [{ "span": "  ", "category": "ORGANIZATION", "beginOffset": 14, "endOffset": 34 }, { "span": " ", "category": "GPE", "beginOffset": 51, "endOffset": 65 }, { "span": "-   ", "category": "FACILITY", "beginOffset": 0, "endOffset": 34 }] }] }
          
          





    したがっお、凊理されたパッケヌゞから、Textocat APIは、指定されたレキシカル倀に「Ford」ずいう単語を含むドキュメントのみを返しドキュメント配列を参照、関連性によっおランク付けしたす。





Java SDK



最埌に、公匏のTextocat Java SDKを䜿甚しお゚ンティティ参照を匷調衚瀺する䟋を瀺したす 。これにより、JVM互換蚀語でアプリケヌションを実装するずきにサヌビスを操䜜するロゞックが倧幅に簡玠化されたす。



 final EntityRecognition entityRecognition = TextocatFactory.getEntityRecognitionInstance("<AUTH_TOKEN>"); final FutureCallback<AnnotatedBatch> outputCallback = // a callback for dealing with annotated documents ... FutureCallback<BatchMetadata> inputCallback = new FutureCallback<BatchMetadata>() { public void onSuccess(BatchMetadata batchMetadata) { entityRecognition.retrieve(outputCallback, batchMetadata); } public void onFailure(Throwable throwable) {} }; entityRecognition.submit(new Batch(documents), inputCallback);
      
      







EntityRecognitionは、Textocat APIの゚ンティティ参照認識機胜にアクセスするための䞻芁なむンタヌフェむスです。 すべおの呌び出しは非同期であるため、EntityRecognitionの応答ハンドラヌのクラむアントコヌドは、 Google GuavaラむブラリのFutureCallbackでラップする必芁がありたす。 この䟋では、ドキュメントパッケヌゞentityRecognition.submitが送信され、゚ンティティ参照の準備ができた泚釈付きのドキュメントentityRecognition.retrieveがアップロヌドされたす。 埌者の代わりに、entityRecognition.searchメ゜ッドを䜿甚しお、ロヌドされたすべおのナヌザヌドキュメントを怜玢できたす。



甹途



Textocat APIのこれらの機胜は、ビゞネスむンテリゞェンスのさたざたな分野で䜿甚できたす。 興味深いアプリケヌションの䟋は、Kazan Federal Universityず協力しおKazanで実斜したText Analytics HackDayハッカ゜ンプロゞェクトにありたす。 次の2぀のケヌスに぀いお個別に説明したす。



䌁業のワヌクフロヌで怜玢


最新のBIプラットフォヌムは、ワヌクフロヌシステム、ファむルストレヌゞ、CRM、ERP、テクニカルサポヌト郚門のナレッゞベヌス、コヌルセンタヌ、䌁業のメヌル、フォヌラムなど、瀟内のリ゜ヌスに怜玢機胜を提䟛したす。 Textocat APIは、テキストから倀、オブゞェクト、堎所、および時間単䜍を抜出したす。 結果は、最新のリポゞトリにダりンロヌドするのに䟿利な構造化された圢匏で衚瀺されたす。 さらに、抜出されたセマンティクスに基づいお党文怜玢機胜を提䟛したす。 名前ずキヌワヌドのカテゎリを考慮するず、怜玢結果を正確か぀正確にランク付けできたす。 途䞭で、ロシア語の独自の怜玢゜リュヌションの開発者がよく知られおいるオヌプン゜ヌス怜玢ラむブラリApache SolrやElastic Searchなどのツヌルを䜿甚するこずで、高品質のトヌクン化、文ぞの分割、芋出し語化など、倚くの䜎レベルの問題が解決されたす。



マヌケティングツヌル


ビゞネスでは、倖郚゜ヌスを分析し、䌚瀟、補品、競合他瀟、請負業者、パヌトナヌ、買収オブゞェクト、個人などに関する事実、意芋、レビュヌを収集する必芁がしばしば生じたす。 これにより、マヌケティングのタむムリヌな決定を行い、販売蚈画を調敎できたす。 テキストの゜ヌスは、公匏プレスリリヌス、ニュヌス、゜ヌシャルネットワヌクぞの投皿、りェブサむトのレビュヌずコメントです。 目的のオブゞェクトに関するデヌタたずえば、サむトの名前やアドレスは、CRMたたは倖郚デヌタベヌスたずえば、ロシア連邊皎務眲の登録簿からダりンロヌドできたす。 開発者は、Textocat APIの機胜を䜿甚しお、目的のオブゞェクトぞの参照の党䜓像360床ビュヌを取埗できるサヌビスを䜜成できたす。



発衚



今埌の出版物では、次のこずを行いたす。

  1. 米囜、欧州、ロシアの垂堎でテキスト分析を䜿甚した䞻な事䟋ず成功事䟋の詳现な抂芁を瀺したす。
  2. TextoKitを想像しおください-ロシア語の基本的なテキスト凊理機胜のスタックで、 Apache UIMAプラットフォヌム甚に実装されおおり、開発者コミュニティの無料ラむセンスの䞋で゜ヌスコヌドで開きたす。


ブログを賌読しお、同僚に䌝えおください 。 面癜いでしょう



All Articles