「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ETL: テキストから人名を抽出する

ETL: テキストから人名を抽出する

2024 年 11 月 7 日に公開
ブラウズ:371

chicagomusiccompass.com.

をスクレイピングするとします。

ご覧のとおり、複数のカードがあり、それぞれがイベントを表しています。では、次の項目をチェックしてみましょう:

ETL: Extracting a Person

イベントの名前は次のとおりです:


jazmin bean: the traumatic livelihood tour


それでは次の質問です: テキストからアーティストの名前を抽出するにはどうすればよいですか?

人間として、jazmin Bean がアーティストであることは「簡単に」わかります。彼らの wiki ページをチェックしてみてください。ただし、その名前を抽出するコードを記述するのは難しい場合があります。

「: より前の部分はアーティスト名でなければなりません」と考えることもできます。これは賢明だと思われますよね?この場合はうまくいきますが、次の場合はどうでしょうか:


happy hour on the patio: kathryn & chris


ここで順序が逆転します。さまざまなケースを処理するロジックを追加し続けることもできますが、すぐに、脆弱でおそらくすべてをカバーできない大量のルールが作成されることになります。

そこで、固有表現認識 (NER) モデルが役立ちます。これらはオープンソースであり、テキストから名前を抽出するのに役立ちます。すべてのケースを検出できるわけではありませんが、ほとんどの場合、必要な情報が得られます。

このアプローチを使用すると、抽出がはるかに簡単になります。 Python の機械学習に関するコミュニティは無敵であるため、私は Python を使用します。


from gliner import GLiNER

model = GLiNER.from_pretrained("urchade/gliner_base")

text = "jazmin bean: the traumatic livelihood tour"
labels = ["person", "bands", "projects"]
entities = model.predict_entities(text, labels)

for entity in entities:
    print(entity["text"], "=>", entity["label"])


出力を生成します:


jazmin bean => person


それでは、他のケースを見てみましょう:


happy hour on the patio: kathryn & chris


出力:


kathryn => person
chris => person


ソース-GLiNER

すごいですよね?名前を抽出するための面倒なロジックはもう必要ありません。モデルを使用するだけです。もちろん、考えられるすべてのケースをカバーしているわけではありませんが、私のプロジェクトでは、このレベルの柔軟性が問題なく機能します。より正確な精度が必要な場合は、いつでも次のことができます:

  • 別のモデルを試してください
  • 既存のモデルに貢献
  • プロジェクトをフォークし、ニーズに合わせて微調整します

結論

ソフトウェア開発者として、機械学習分野のツールを常に最新の状態に保つことを強くお勧めします。単純なプログラミングとロジックだけですべてを解決できるわけではありません。一部の課題には、モデルと統計を使用する方がうまく対処できます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/garciadiazjaime/etl-extracting-a-persons-name-from-text-ahl?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3