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

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

[[316046]]

独自の 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 を使用する場合は試してみる価値はあります。

<<:  私たちは皆、AIについて間違っていました! MIT教授が批判:データへの過度の焦点

>>:  古代には魔法の鏡があり、今では顔認識機がある。マイクロソフトの傑作CVPR 2020は偽の顔を隠すことを不可能にする

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

推薦する

...

Nvidia 3090が180億パラメータの大規模モデルに単独で挑む。今度は国内オープンソースプロジェクトが大暴れ

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

...

コンパニオン チップ: AI にとって賢い選択でしょうか?

半導体業界では長年にわたり、より多くのコンポーネントを単一のシステムオンチップ (SoC) に緊密に...

しゃべるアバター!新しいフレームワークLipSync3Dは将来的に動的なリップシンクを可能にするかもしれない

Google AIの研究者たちは、インド工科大学カラグプル校と協力し、音声コンテンツから話すアバター...

企業で文明的な AI を推進するための 6 つのヒント

「文明化された AI」への期待が高まるにつれ、コンサルタントは公平で偏見のないアルゴリズムを作成する...

一貫性ハッシュアルゴリズムの図

[[380706]]この記事はWeChatパブリックアカウント「Full-Stack Cultiva...

...

時速22キロのスピードと50キロの荷重で、四足の車輪付きロボット「スイスマイル」は変形することを学んだ。

テスラと「レース」を敢行する四輪ロボットを見たことがありますか?以下に示すように、かなり高速であるよ...

インテリジェントロボットにはどのような主要なセンサー技術が使用されていますか?

今日のロボットで重要な役割を果たしているいくつかの主要なセンサー技術には、磁気位置センサー、存在セン...

...

2018 年の人工知能の 8 つの主要トレンド!

[[251877]]計算の観点から見ると、ビッグデータ分析のトレンドは流れ星のように消えることはあ...

住宅価格予測のための機械学習

序文Python は機械学習において当然の利点を持っているので、今日から機械学習技術に取り組んでみま...

教育省:中国はAI教育政策の提供を増やす

12月7日から8日にかけて、中華人民共和国教育部、中国ユネスコ国家委員会、ユネスコの共催による「20...

人工知能はソフトウェア開発のパラダイムを変えている

ソフトウェア開発者は、コードの作成とレビュー、バグの検出、ソフトウェアのテスト、開発プロジェクトの最...