自然言語処理のためのオープンソースツール12選

自然言語処理のためのオープンソースツール12選

[[316192]]

独自の NLP アプリケーションで使用できる 12 個のツールを見てみましょう。 -- ダン・バーカー(著者)

過去数年間、自然言語処理 (NLP) は、チャットボット、音声アシスタント、予測テキスト、その他私たちの日常生活に浸透している音声またはテキスト アプリケーションの開発を推進してきました。世の中にはさまざまなオープンソース NLP ツールが存在するため、次の音声またはテキストベースのアプリケーションの計画に役立つように、現在のオープンソース NLP ツールを調査することにしました。

すべてのツールに精通しているわけではありませんが、まずは私が精通しているプログラミング言語から始めます(精通していない言語用のツールを大量に見つけることはできませんでした)。とはいえ、さまざまな理由から、自分が使い慣れている 3 つの言語以外のツールは除外しました。

R はおそらく含まれていない最も重要な言語です。私が見つけたライブラリのほとんどは 1 年以上更新されていないからです。これは必ずしもメンテナンスが行き届いていないことを意味するわけではありませんが、同じ分野の他のツールと競争するためには、さらにアップデートする必要があると思います。私は主に R を研究および発見ツールとして使用していますが、学術界や研究ではなく、実稼働シナリオで使用される可能性が最も高い言語とツールも選択しました。

また、多くの Scala ライブラリが更新されていないことにも驚きました。 Scala が非常に人気があった頃、最後に使用してから 2 年が経ちました。しかし、ほとんどのライブラリはそれ以降更新されていないか、ごく少数しか更新されていません。

最終的に、C++ は除外しました。 これは主に、私が最後に C++ でプログラムを書いてから何年も経っており、私が勤務する組織では NLP やデータ サイエンスの作業にまだ C++ を使用していないためです。

Python ツール

自然言語ツールキット (NLTK)

Natural Language Toolkit (NLTK) は、間違いなく私が研究した中で最も包括的なツールです。分類、トークン化、ステミング、タグ付け、単語分割、意味的推論など、自然言語処理のほぼすべての機能コンポーネントを実装します。それぞれに複数の異なる実装があるため、特定のアルゴリズムとアプローチを選択できます。同時に、さまざまな言語もサポートしています。ただし、すべてのデータが文字列の形式で表現されるため、単純なデータ構造の場合は便利ですが、高度な機能を使用する場合は少し難しいかもしれません。ドキュメントは少し複雑ですが、この素晴らしい本のように、他の人が書いたドキュメントがたくさんあります。他のツールと比較すると、このツール ライブラリは少し遅いです。しかし、全体として、このツールキットは非常に優れており、特定のアルゴリズムの組み合わせを必要とする実験、調査、実際のアプリケーションに使用できます。

スパシー

SpaCy はおそらく NLTK の主な競合相手です。ほとんどの場合、NLTK よりも高速ですが、SpaCy には各 NLP コンポーネントの実装が 1 つしかありません。 SpaCy はすべてを文字列ではなくオブジェクトとして表現するため、アプリケーション構築インターフェースが簡素化されます。これにより、さまざまなフレームワークやデータ サイエンス ツールとの統合も容易になり、テキスト データを理解しやすくなります。ただし、SpaCy は NLTK ほど多くの言語をサポートしていません。シンプルなインターフェース、簡素化されたオプション セット、詳細なドキュメント、および言語処理と分析のさまざまなコンポーネント用の多種多様なニューラル ネットワーク モデルが備わっています。全体として、これは、本番環境で良好なパフォーマンスを発揮する必要があり、特定のアルゴリズムを必要としない新しいアプリケーションに最適なツールです。

テキストブロブ

TextBlob は NLTK の拡張ライブラリです。 TextBlob を使用すると、NLTK の機能をより簡単に使用できます。TextBlob には、Pattern ライブラリの機能も含まれています。始めたばかりの場合、これはパフォーマンス要件がそれほど高くない実稼働アプリケーションに使用するのに最適なツールです。全体的に、TextBlob はあらゆるシナリオに適していますが、特に小規模なプロジェクトに適しています。

テキストアシー

このツールの名前は私が今まで使った中で最高のものです。まず「ex」にアクセントをつけ、次に「cy」を発音します。「Textacy」を何度か読んでみてください。音質が良いだけでなく、それ自体が優れたツールでもあります。自然言語処理のコア機能には SpaCy を使用していますが、プロセスの前後で多くの作業が行われます。 SpaCy を使用する場合は、追加のコードを記述せずにさまざまな種類のデータを処理できるように、Textacy を使用することをお勧めします。

PyTorch-NLP

PyTorch-NLP は登場してからまだ 1 年しか経っていませんが、すでに大規模なコミュニティが形成されています。ラピッドプロトタイピングに適しています。新しい研究が発表されたり、大企業や研究者が画像変換などの新しい処理タスク用の追加ツールを発表したりすると、更新されます。一般的に、PyTorch は研究者を対象としていますが、最先端のアルゴリズムを使用したプロトタイピングや初期の生産ワークロードにも使用できます。これを基に作成されたライブラリも研究する価値があります。

Node.js ツール

テキスト変更

Retext は Unified コレクションの一部です。 Unified は、さまざまなツールとプラグインを統合して効率的に動作できるようにするインターフェースです。 Retext は、Unified ツールで使用される 3 つの構文のうちの 1 つで、他の 2 つは Markdown 用の Remark と HTML 用の Rehype です。これは本当に興味深いアイデアであり、このコミュニティがどのように発展していくのか楽しみです。 Retext には多くの基礎技術は関係しませんが、NLP タスクで実行したいことを実現するためにプラグインを使用することが重要です。スペルチェック、グリフ修復、感情検出、読みやすさの向上はすべて、シンプルなプラグインで実行できます。全体的に、基礎となる処理技術を理解したくないが、タスクを完了したい場合は、このツールとコミュニティが適しています。

妥協

妥協は、決して最も洗練されたツールではありません。最も高度なアルゴリズムと最も包括的なシステムを探しているのであれば、妥協はおそらくあなたには向いていません。ただし、優れたパフォーマンスと幅広い機能を備え、クライアント側で実行できるツールが必要な場合は、Compromise を試してみる価値があります。全体的に、その名前 (「妥協」) は正確です。著者は、機能性と精度の間である程度の妥協をしながら、より具体的な機能を備えた小さなパッケージに焦点を当てており、これらの小さなパッケージは、ユーザーが使用環境を理解することで恩恵を受けています。

自然

Natural には、通常の自然言語処理ライブラリにあるほとんどの機能が含まれています。主に英語のテキストを処理しますが、他の言語もいくつか含まれており、コミュニティでは他の言語のサポートを歓迎しています。トークン化、ステミング、分類、音声処理、TF-IDF、WordNet、文字の類似性、およびいくつかの変換を行うことができます。すべてを 1 つのパッケージにまとめようとする点では NLTK に似ていますが、使いやすく、必ずしも研究に重点を置いているわけではありません。全体として、これはまだ活発に開発中の非常に完全なライブラリですが、完全に効果を発揮するには、基礎となる実装に関するもう少しの知識が必要になる可能性があります。

翻訳:

Nlp.js は、Franc や Brain.js など、他のいくつかの NLP ライブラリ上に構築されています。分類、感情分析、ステミング、固有表現認識、自然言語生成など、多くの NLP コンポーネントへの優れたインターフェースを提供します。他のいくつかの言語もサポートしているため、英語以外の言語を扱うときに役立ちます。全体として、これは他のツールへの簡素化されたインターフェースを提供する優れた汎用ツールです。このツールは、より強力で柔軟なものが必要になるまで、アプリケーションで長期間にわたって役立つ可能性があります。

Javaツール

オープンNLP

OpenNLP は Apache Foundation によって管理されているため、Apache Flink、Apache NiFi、Apache Spark などの他の Apache プロジェクトに簡単に統合できます。これは、すべての NLP コンポーネントに共通する機能を備えた一般的な NLP ツールです。コマンドラインから使用することも、パッケージとしてアプリケーションにインポートすることもできます。多くの言語もサポートしています。 OpenNLP は多くの機能を備えた非常に効率的なツールであり、Java で製品を開発する場合に適しています。

スタンフォード CoreNLP

Stanford CoreNLP は、統計 NLP、ディープラーニング NLP、ルールベース NLP 機能を提供するツールセットです。このツールは他の多くのプログラミング言語でも利用できるため、Java 以外でも使用できます。これは高レベルの研究組織によって作成された効率的なツールですが、実稼働環境では最適ではない可能性があります。このツールは、商用目的で使用できる特定のライセンスとのデュアルライセンスです。全体として、これは研究や実験には最適なツールですが、生産システムでは追加のコストがかかる可能性があります。読者は Java バージョンよりも Python バージョンに興味があるかもしれません。また、Coursera の最高の機械学習コースの 1 つはスタンフォード大学の教授によるものです。他の優れたリソースにアクセスするには、ここをクリックしてください。

コグコンプNLP

CogCompNLP はイリノイ大学によって開発されたツールで、同様の機能を備えた Python バージョンもあります。ローカルとリモートの両方でテキストを処理するために使用できるため、ローカル デバイスの負荷を大幅に軽減できます。トークン化、品詞タグ付け、文の分割、名前付きエンティティのタグ付け、レマタイズ、依存関係の解析、意味役割のラベル付けなど、多くの処理機能を提供します。これは優れた調査ツールであり、さまざまな機能を自分で調べることができます。実稼働環境に適しているかどうかはわかりませんが、Java を使用する場合は試してみる価値はあります。

<<:  AIoT: トーク

>>:  確かな情報です!魅力的なチャットボットを 0 から 1 まで構築する方法を教えますか?

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

音声分析:自動運転車の鍵となる技術

サプライチェーン管理、製造業務、モビリティサービス、画像およびビデオ分析、音声分析の進歩により、次世...

100 日で機械学習: モデルのトレーニングが完了したら、次は何をする?

機械学習をマスターするための 100 日 | 1 日目から 62 日目までのコレクションみなさんこん...

7兆のブルーオーシャンが呼んでいる、ケータリングロボットの商業利用を加速させるには?

「機械が人に代わる」という無人化とインテリジェント化の潮流は、伝統的な飲食業界のあらゆる分野に広が...

インテル、IoTとエッジ向け第10世代プロセッサーを発表

Intel は最近、第 10 世代 Core プロセッサが、スループット、LGA ソケットのスケーラ...

配達員はSF映画のハイテク技術を駆使し、平地を歩いているかのように100キロの重量を運ぶ。

昨日、配達員の動画がインターネット上で話題になった。動画では、ハミングバードデリバリーの配達員がテイ...

Google、AIロボットが人間に危害を加えないことを保証する「ロボット憲法」を起草

グーグルのディープマインドは1月5日、3つの新たな開発を発表した。その1つは、AIロボットが人間に危...

人工知能が私たちの生活に及ぼす8つの影響

[[226485]]マイクロソフト アジア社長のラルフ ハウプター氏によると、AI が概念から現実の...

人工知能の研究内容:自然言語処理と知的情報検索技術

自然言語処理は、人工知能技術を実際の分野に応用した典型的な例です。コンピュータ システムが人間のよう...

AIは「メイおばさん」を見つけられるのか?

[[283120]]インターネット全体が「メイおばさん」を探しているが、彼女が誰なのかは謎のままだ...

...

人工知能の時代において、テクノロジーは中立ではない

インターネットや人工知能に代表される情報技術の台頭により、社会は第三次科学技術革命の時代を迎えていま...

...

AIが医療業界の情報セキュリティに及ぼす影響

このインタビューでは、Moss Adams のマネージング ディレクターである Troy Hawes...

機械学習がサプライチェーン管理を変える10の方法

[[431487]]サプライチェーン管理で機械学習を使用すると、日常的なタスクを自動化できるため、企...

...