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

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

推薦する

Appleが自社チップ用のオープンソースフレームワークMLXを開発、Llama 7Bを実装しM2 Ultraで動作

2020年11月、Appleは速度と強力な機能の点で驚異的なM1チップを発売しました。 2022年に...

自動運転車にLIDARはなぜ必要ないのでしょうか?

[51CTO.com クイック翻訳]自動運転車の開発と生産にはどのような技術が必要か?この質問に対...

ガートナー:2021年までに70%の組織が従業員の生産性向上にAIを活用する

人工知能は職場にますます浸透しつつあり、現在では仮想パーソナルアシスタント (VPA) やその他の形...

ビッグニュース! ChatGPTの2つの主要イベント

1 つ目は、GPT-4 API です。完全にオープンに使用できます。 7月7日、OpenAIは公式ウ...

脅威検出システムにAIを統合するメリット

サイバー脅威は高度化、蔓延しているため、企業は常に警戒を怠ってはなりません。 2022年には、4億9...

自然言語処理のためのOne Hot Modelについて

[[421481]]この記事はWeChatの公開アカウント「Pythonとビッグデータ分析」から転載...

効果は爆発的! OpenAIが初のビデオ生成モデルをリリース、1分間のスムーズなHDビデオ、ネットユーザー:業界全体が安らかに眠る

先ほど、ウルトラマンがOpenAI初の動画生成モデル「ソラ」をリリースしました。 DALL·E 3 ...

...

Java スパニングツリー構造 ポイント間の最短経路アルゴリズム

まずは二分木についてお話しましょう。二分木は、各ポイントが 2 つのポイントに接続されているツリー構...

...

医療提供者はなぜインテリジェントオートメーションに投資する必要があるのでしょうか?

インテリジェント オートメーション (IA) は、人工知能とオートメーションを組み合わせたものです。...

Google AIのスターがPika: ビデオ生成Lumiereの創設科学者に就任

動画世代が猛スピードで進化する中、ピカは偉大なる将軍を迎える―― Google の研究者である Om...

...

快手とインテルが提携し、KGNN プラットフォームでの大規模リアルタイム動的グラフトレーニングの効率を向上

ショートビデオの推奨やソーシャル推奨などのアプリケーションシナリオでは、推奨システムは大量の急速に変...

AIは自動車でも加速しており、メルセデス・ベンツは車載音声アシスタントをChatGPTチャットボットに接続すると発表した。

6月16日のニュースによると、メルセデス・ベンツは木曜日、6月16日にテストプログラムを開始し、ア...