文から単語を抽出し、それぞれの品詞を特定するにはどうすればよいですか?[閉まっている]


19

私は文を取り、それに含まれる各単語を識別し、各単語が品詞のどの部分であるかを定義する何かを書きたいです。

例えば

Hello World、私は文です

これを返します

verb noun, pronoun verb adjective noun

理想的には、最終的にそれをさらに一歩進めて文を取り、プログラムでそれが解釈しようとしていることを理解し、おそらくそれについて何かをしたいと思います。

だから私の質問は、誰かがこのようなことを聞​​いたことがありますか?


2
「こんにちは」は動詞ですか?つまり、他に何が起こるのかはわかりませんが、動詞のようには見えません。
ダン・レイ

@DanRay:多分それはenglish.stackexchange.comの質問でしょうか?
StriplingWarrior

1
@DanRayハハ、分かりますか?これが何かがこれを行うことができるかどうかを理解しようとしている理由です、明らかに私は文法がひどいです。
ヴィニー

@Vinny-もちろん可能です。問題は...これは次の1兆ドルのアイデアであり、現時点ではまだ製品化されていないということです。
ラムハウンド

1
@Vinnyはい、誰かがそのようなことを聞​​いたことがあります。
Tulainsコルドバ

回答:


18

これは自然言語処理と呼ばれ、巨大で複雑な分野です。あなたが説明するようなものは記念碑的な成果であり、ワトソンのような最高のソリューションでさえ完璧に近いものではありません。

このようなことは難しいことです:「Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo」

同音異義語と同音異義語を使用して複雑な言語構造を作成する方法の例として使用される、アメリカ英語の文法的に正しい文。1972年以来、文学で議論されてきました...スティーブン・ピンカーの1994年の本The Language Instinctでも、「一見無意味な」文法の例として取り上げられました...

ニューヨーク州バッファロー市とやや珍しい動詞「to buffalo」(「いじめや脅迫」を意味する)を使用していることが理解され、句読点と文法が拡張されて文が拡張されると、文の意味がより明確になります。 「Buffalo buffalo that buffalo buffalo buffalo、buffalo buffalo buffalo」と読みます。同義語を使用すると、意味がさらに明確になります:「他のバッファローバイソンがいじめっ子であるバッファローバイソン、それ自体がバッファローバイソンをいじめている」。


1
これは私が探しているものです!誰かがこれを小規模で適応していると聞いたことがありますか?オープンソース?これが小規模で使用されている例は?
ヴィニー

@Vinny AFAIKは、オープンソースではほとんど利用できません。これらの問題を解決することは、MS Word文法検出のような企業にとって非常に有益です。私が信じているが利用可能ないくつかのチャッターボットプログラムがあります。
リャサル

1
@Vinny規模とは何の関係もありません。自然言語処理には固有の複雑さがあり、「スケール」を小さくしても軽減されません。
Tulainsコルドバ

6

文を分割し、最初の問題を解決するとともに文法の正確さを決定することは、2番目の問題よりも簡単です。動詞名詞や水泳やプログラミングなどの動詞のような多くの複雑さ、その他の複雑なことは、まだ挑戦です-モロンを参照してください回答。

しかし、2番目の問題-人々は完璧な解決策を見つけるために多大な努力を払っていますが、本当に完璧な「解釈」アルゴリズムは英語のような自然言語では実際に実現できません- アルゴリズム台無しにするバリエーションがあります。この分野-AI、コンピューターサイエンス、言語学のハイブリッドはNLPとして知られています。これを考慮してください:文を「解釈」するとき、Google翻訳でさえ完璧ではありません。

しかし、それでも、これは手を出すには非常に興味深い分野です。


@StriplingWarrior OPによって引き起こされる2つの問題を十分に対比したかったのです。注目。編集中
ヤティサガデ12

4

このウィキペディアの記事を読み始めるべきだと思います。

http://en.wikipedia.org/wiki/Part-of-speech_tagging

(これは研究分野であり、簡単な解決策を期待しないでください。)


2
NLPは今日のコンピューターでは巨大で、ハードで、おそらく手に負えないものですが、POSタグ付けはその最も簡単な部分であり、十分なコーパスサイズまたは多くの献身と手動のルール記述により、ほぼ完全に解決できることに加えて、確かに99%以上の正確さ。それで十分でしょう。
キリアンフォス

ありがとう、これはまさに私が探していたものです。
Amc_rtty

実際にOPの説明に基づいて、これは@KilianFoth
Amc_rtty

-1

これを行う簡単な方法は、辞書のデータベースをセットアップすることです(誰かがこれを行ったことはほぼ間違いありません)。

テーブル内の2つのフィールドが必要ですwordし、usage

フレーズを文字列の配列に変換します(各単語は文字列です)。

select 'usage' from Dictionary WHERE 'word' = $word; 

それは重い解決策ですが、私が過去に使用したものです。


5
これは、各単語に可能なPOSが1つしかないことを前提としており、そうではないことを保証します。
マイクロテリオン

同意-文脈によっては、名詞、動詞などとして機能する可能性のあるすべての単語で(少なくとも英語では)これが実行可能な方法はありません。
デレク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.