解析の再開

自動化された履歴書分析のタスクに直面している人は、この分野の現状を表しています。既存のパーサーは、主に連絡先情報や「位置」や「都市」などのフィールドの強調に限定されています。



意味のある分析を行うには、これで十分ではありません。 特定の行を強調表示してタグを付けるだけでなく、その背後にあるオブジェクトの種類を判断することも重要です。



ライブ例( Sovren分野のリーダーの1人によるXML要約分析結果の一部 ):



<EmployerOrg> <EmployerOrgName> -DSME</EmployerOrgName> <PositionHistory positionType="directHire"> <Title>     </Title> <OrgName> <OrganizationName> -DSME</OrganizationName> </OrgName>
      
      





Sovrenパーサーは、フィールドを強調する素晴らしい仕事をしました。 彼らはほぼ20年間このビジネスを行っているのに無駄ではありません!



しかし、「情報システム開発部のリーディングスペシャリスト」で次に何をすべきでしょうか? これがどのような立場であるかを理解する方法、特定の欠員に対するこの人の職務経験はどの程度関連していますか?



あなたの仕事が空席の要件を満たす従業員を見つけること、またはその逆の場合-候補者の経験と希望の空席、次にキーワードを検索し、 単語の袋を比較すると平凡な結果が得られます。 可能な同義名のセットに対応するオブジェクトの場合、このアプローチは機能しません。



最初に名前を正規化し、「何かの専門家」をプログラマー、システム管理者、その他の耳鼻咽喉科医に変える必要があります。



これを行うには、オブジェクトの分類法である知識ベースをコンパイルする必要があります。 さらに、具体的には、たとえば建築者だけを記述するだけでは十分ではありません-人々は活動分野を変更し、建築者の履歴書には、仕事の建設に関連しない他の人もいる可能性があります。



そして、分類法が構築のみを記述する場合、他の活動分野に関連するテキストに誤検知があります。 建設では、「建築家」は1つのことであり、ITではまったく別です。 「操作」、「プロモーション」、「オブジェクト」、およびこれらの単語を含む多くのフレーズは、解決する必要があるあいまいさの例です。



単純な正規化でも、ロシア民主主義の父は救われません。 履歴書を書いて人員配置表を作成する人々の幻想は驚くことを決して止めません。 開発者にとって残念なことに、これは、一般的な場合、オブジェクトを記述する行からこのオブジェクトを識別することが不可能であることを意味します。 つまり、もちろん、フィールドと目的の位置を与えることで、分類器を訓練することができます。

そして、それも機能します。 「会計士」、「秘書」、「プログラマー」。

ここでのみ履歴書の中で、人々は「部門Nの専門家」と書いており、彼が会計士であるか秘書であるかは、実行された職務によって状況によってのみ理解できます。



分類子も責任について訓練されている場合でも、コンテキストを考慮します。 だから、そうではない-責任のセットを決定する際に同じ問題:解釈のあいまいさ、あらゆる種類のあいまいな照応 )。



確率的(ベイジアン)アプローチを適用することにしました。



すべての行のソーステキストの分析(たとえば、「architect」、「work

クライアントと一緒に))すべての可能な解釈のセットを定義します

(たとえば、「建築家」の場合、「建築設計者」、「ソフトウェア設計者」

プロビジョニング」など)。 結果は、一連の解釈のセットです。 それから

信頼性を高めるために、すべてのセットからの解釈の組み合わせを探しています

最大でした。



例:





どちらの職場でも、「マネージャー」という言葉は完全に異なる役職を意味するために使用されます。 コンテキストの観点から、最初のケースではポジションが本当に管理職であり、2番目のケースでは自分を売り手と呼ぶ方がより適切であることを理解できます。



「カスタマーサービスマネージャー」と「販売者」のどちらかを選択するために、これらの職位とこの職場で見つかったスキルを組み合わせる可能性を評価します。 同時に、いくつかのオプションから同じ方法でスキルを選択できるため、タスクは、テキストで見つかった多くのオブジェクトの最も可能性の高い組み合わせを選択することです。



さまざまな種類(スキル、職位、産業、都市など)のオブジェクトの数は非常に多く(知識ベースでは数十万)、したがって、履歴書が属するスペースは非常に多次元です。 ほとんどの機械学習アルゴリズムをトレーニングするには、天文学的な数の例が必要です。



カットすることにしました。 つまり、パラメーターの数を大幅に減らし、十分な数の例がある場合にのみトレーニングの結果を使用します。



そもそも、機能タプルの組み合わせに関する統計情報の収集を開始しました。たとえば、位置産業、位置部門、位置スキルです。 これらの統計に基づいて、これまでに見られなかった新しい組み合わせの可能性を評価します。

オブジェクトと最適な組み合わせを選択します。



上記の例では、スキルセットは、最初のケースではパーサーをマネージャーに向け、2番目のケースでは売り手に向けて傾斜させます。



単純なカウンターとベイズ確率推定を使用すると、少数の例で良好な結果を得ることができます。 現在、当社の知識ベースには、専門家によってマークされた約10万の空席と履歴書があり、これにより、一般的なオブジェクトのほとんどのあいまいさを解決できます。



出力では、応募者や雇用主が思いついた知識ベースではなく、知識ベースに関して欠員または履歴書を記述するJSONオブジェクトを取得します。



この表現は、パラメータによる正確な検索、候補者の履歴書の評価(「スコアリング」)、または「履歴書と空席」のペアのマッチングに使用できます。



履歴書(doc、docx、pdf(画像ではない)、その他の形式)をダウンロードし、そのプレゼンテーションをJSONで取得できるシンプルなインターフェイスを作成しました。 152FZを忘れないでください! 実際の個人データで履歴書を試す必要はありません:)



たとえば、以下は要約です。



非表示のテキスト
パプキン・ヴァシリー・リボヴィッチ

オムスク

tel +7923123321123



責任ある勤勉なセールスマネージャー。



実務経験



  • 2001-2002:LLC Bytdompravm。 庭の領土クリーナー。 特に慎重に除雪作業を行いました。
  • 2005年3月12日から2007年1月30日まで、ナデジダストア。 シニアキオスク販売ソーセージ。 2か月でソーセージの売り上げが146%増加しました。
  • 2002-2003:Kuzremont LLCティンショップのボディショップ。 「メルセデス」の「コサック」を作り直しました。


オプショナル

肉体的に強く、スマートで、美しい。 Range Rover Sportの自家用車とカテゴリーBがあります。


次のJSONに変わります。



非表示のテキスト
 { "url": null, "name": "  , . ", "skill_ids": [ { "cv_skill_id": 5109999, "skill_name": "", "skill_id": 91, "skill_level_id": 1, "skill_level_name": "" }, { "cv_skill_id": 5110000, "skill_name": "", "skill_id": 596, "skill_level_id": 1, "skill_level_name": "" }, { "cv_skill_id": 5109998, "skill_name": " ", "skill_id": 1474, "skill_level_id": 1, "skill_level_name": "" }, { "cv_skill_id": 5109997, "skill_name": " ", "skill_id": 2688, "skill_level_id": 2, "skill_level_name": "" } ], "description": " ", "ts": "2016-09-14 06:00:51.136898", "jobs": [ { "employer_id": null, "description": ":  .    .       ", "department_id": null, "company_size_id": null, "industry_id": null, "start_date": "2001-01-01", "cv_job_id": 1812412, "company_size_name": null, "employer_name": null, "job_id": 336, "department_name": null, "industry_name": null, "end_date": "2002-01-01", "job_name": "" }, { "employer_id": null, "description": ":   -  .  \"\"  \"\".   , , .    Range Rover Sport    B", "department_id": null, "company_size_id": null, "industry_id": null, "start_date": "2002-01-01", "cv_job_id": 1812414, "company_size_name": null, "employer_name": null, "job_id": 268, "department_name": null, "industry_name": null, "end_date": "2003-01-01", "job_name": " " }, { "employer_id": null, "description": " 12.03.2005  30.01.2007  \"\".     .     146%  2 ", "department_id": null, "company_size_id": null, "industry_id": 39, "start_date": "2005-03-12", "cv_job_id": 1812413, "company_size_name": null, "employer_name": null, "job_id": 354, "department_name": null, "industry_name": " ", "end_date": "2007-01-30", "job_name": "" } ], "cv_file_id": 16598, "favorite_industries": [ { "name": " ", "industry_id": 39 } ], "wage_min": null, "cv_id": 1698916, "favorite_areas_data": [ [ { "id": 198830, "name": " ", "level": 1 }, { "id": 10005, "name": "  ", "level": 2 }, { "id": 88, "name": " ", "level": 3 }, { "id": 727, "name": ". ", "level": 4 } ] ], "certificate_ids": [ { "certificate_name": "   B", "certificate_id": 118, "cv_certificate_id": 604445 } ], "cv_owner": "own", "favorite_jobs": [ { "name": "  ", "job_id": 112 } ], "cv_status_id": 2, "filename": "test_resume.odt" }
      
      





パーサーでの個人データの抽出は無効になっています。JSONで検索しないでください。


私の偏見では、結果は興味深いものであり、多くの用途があります。 人間に匹敵するオブジェクト認識の精度は、まだ非常に遠いものです。 知識ベースを開発し、例を使用してアルゴリズムをトレーニングし、追加のヒューリスティックを導入し、場合によっては、たとえば産業を識別するために高度に専門化された分類器を導入する必要があります。



どんなテクニックを使っているのでしょうか、それとも使うのでしょうか? ComprenoのようなABBYYセマンティックアプローチを使用している人は特に興味深いでしょうか。



All Articles