自然言語処理のためのオープンソースツール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 まで構築する方法を教えますか?

ブログ    

推薦する

太陽光発電や風力発電に AI はメリットをもたらすのでしょうか?

太陽光発電と風力発電は急成長しているが、世界の再生可能電力への移行は、気候目標を迅速に達成するにはま...

...

...

...

...

法律分野で初の「1対多」の人間と機械の競争が始まり、AI弁護士が契約書審査で人間を上回る

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

さまざまな機械学習アルゴリズムの選択の考え方を説明する記事

序文これは Zhihu に関する質問です: k 近傍法、ベイズ法、決定木、SVM、ロジスティック回帰...

2020年から2024年までの中国のインテリジェント交通産業の予測分析

[[374436]] 1.1 中国の数千万規模のインテリジェント交通プロジェクトの競争環境中国投資産...

OpenAI が 10 億ドルで Microsoft に売却された後、汎用人工知能にはまだ希望があるのでしょうか?

[[422423]]お金が手に入ったとき、あなたはまだ当初の意図を貫くことができますか? OpenA...

App Store 中国地域がアルゴリズムを調整?一部のアプリではフルネームによる検索が機能しません

最近、中国の Apple App Store で「奇妙な現象」が発生しました。一部のアプリケーション...

人工知能によるサイバーセキュリティ防御の強化

人工知能は貴重で脆弱なデータを保護する上で大きな可能性を秘めていますが、セキュリティ チームがそれを...

...

2019年に解決すべき11のAI倫理的ジレンマ

ビッグデータダイジェスト制作編集者: Luan Hongye、Aileen今こそAIの倫理について議...

...