11

これが幅広いトピックであることは理解していますが、テキストから意味を解析するための優れた入門書を探しています。理想的にはPythonで。私がやろうとしていることの例として、ユーザーが次のようなブログ投稿を作成した場合:

「マニー・ラミレスは、今日のヒューストン・アストロズ戦でドジャースに復帰する」,

文から名詞を取り出す軽量/簡単な方法は何ですか? まず、固有名詞に限定すると思いますが、それだけに限定したくはありません (また、Title Capped が固有名詞であると仮定する単純な正規表現に依存したくありません)。

この質問をさらに悪いことに、私が求めていないことは何ですか? 始めるために既存の単語のコーパスが必要ですか? これを機能させるには、どのような字句解析について知っておく必要がありますか? このトピックに関する別の質問に出くわしました。現在、それらのリソースを掘り下げています。

4

7 に答える 7

10

まさにこの種のもののためのNatural Language Toolkitを見る必要があります。

マニュアルのこのセクションは非常に関連しているように見えます: Categorizing and Tagging Words - ここに抜粋があります:

>>> text = nltk.word_tokenize("And now for something completely different")
>>> nltk.pos_tag(text)
[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'),
('completely', 'RB'), ('different', 'JJ')]

ここでandは CC であり、調整接続詞です。では完全にRB、または副詞です。forは IN、前置詞です。何かがNN、名詞です。そして違うのは形容詞のJJです。

于 2009-07-17T00:07:54.530 に答える
8

NLTK、特に情報抽出に関する第 7 章を​​使用します。

あなたは意味を抽出したいと言い、セマンティック分析用のモジュールがありますが、必要なのは IE だけだと思います。正直なところ、NLP コンピューターが現在処理できる唯一の領域の 1 つです。

Named Entity Recognition (Manny Ramerez を個人として、Dodgers をスポーツ組織として、Houston Astros を別のスポーツ組織として、またはドメインに適したものとしてチャンクおよび分類する) および Relationship Extraction のサブトピックに関するセクション 7.5 および 7.6 を参照してください。NLTK をインストールしたらプラグインできる NER チャンカーがあります。彼らの例から、地政学的エンティティ (GPE) と人物を抽出します。

>>> sent = nltk.corpus.treebank.tagged_sents()[22]
>>> print nltk.ne_chunk(sent) 
(S
  The/DT
  (GPE U.S./NNP)
  is/VBZ
  one/CD
  ...
  according/VBG
  to/TO
  (PERSON Brooke/NNP T./NNP Mossman/NNP)
  ...)

これらの IE タスクに適した形式でテキストを取得するには、前の章で説明したように、トークン化とタグ付けについて知っておく必要があることに注意してください。

于 2009-07-17T03:58:18.573 に答える
7

自然言語処理 (NLP) は、解析、つまり自然言語の名前です。多くのアルゴリズムとヒューリスティックが存在し、活発な研究分野です。コーディングするアルゴリズムが何であれ、コーパスでトレーニングする必要があります。人間と同じように、私たちは他の人が書いたテキストを読むことによって (および/または他の人が発した文章を聞くことによって) 言語を学びます。

実際には、Natural Language Toolkitをご覧ください。コーディングしようとしているものの理論的基盤については、Chris Manning と Hinrich Schützeによる Foundations of Statistical Natural Language Processingをチェックしてみてください。

代替テキスト
(出典: stanford.edu )

于 2009-07-17T00:15:09.623 に答える
4

これは私が最近見つけた本です: Python による自然言語処理

于 2009-07-17T00:12:15.847 に答える
3

あなたが望むものは、NP(名詞句)チャンク、または抽出と呼ばれます。

ここにいくつかのリンクがあります

指摘したように、これは非常に問題のあるドメイン固有のものです。絞れば絞るほど効果的です。また、特定のドメインでプログラムをトレーニングする必要があります。

于 2009-07-17T00:11:58.000 に答える
1

これは本当に複雑なトピックです。一般に、この種のものは自然言語処理の範疇に入り、せいぜいトリッキーになる傾向があります。この種のことの難しさはまさに、顧客サービスなどを処理するための完全に自動化されたシステムがまだない理由です.

一般に、このようなものへのアプローチは、問題のドメインが正確に何であるかによって異なります。問題のドメインを選別することができれば、非常に大きなメリットを得ることができます。あなたの例を使用すると、問題のドメインが野球であると判断できれば、非常に有利なスタートを切ることができます。それでも、特に役立つものを手に入れるのは大変な作業です。

確かに、既存の単語集は役に立つでしょう。さらに重要なことは、システムに期待される機能の複雑さを判断することが重要になることです。単純な文を解析する必要がありますか、それとも複雑な動作を解析する必要がありますか? 入力を比較的単純なセットに制限できますか?

于 2009-07-17T00:10:30.123 に答える
-1

正規表現は、いくつかのシナリオで役立ちます。詳細な例は次のとおりです: What's the Most Mentioned Scanner on CNET Forumでは、正規表現を使用して、CNET フォーラムの投稿で言及されているすべてのスキャナーを見つけました。

投稿では、正規表現自体が使用されました。

(?i)((?:\w+\s\w+\s(?:(?:(?:[0-9]+[a-z\-]|[a-z]+[0-9\-]|[0-9])[a-z0-9\-]*)|all-in-one|all in one)\s(\w+\s){0,1}(?:scanner|photo scanner|flatbed scanner|adf scanner|scanning|document scanner|printer scanner|portable scanner|handheld scanner|printer\/scanner))|(?:(?:scanner|photo scanner|flatbed scanner|adf scanner|scanning|document scanner|printer scanner|portable scanner|handheld scanner|printer\/scanner)\s(\w+\s){1,2}(?:(?:(?:[0-9]+[a-z\-]|[a-z]+[0-9\-]|[0-9])[a-z0-9\-]*)|all-in-one|all in one)))

次のいずれかに一致するようにします。

  • 2 つの単語、モデル番号 (オールインワンを含む)、「スキャナー」</li>
  • 「スキャナー」、1 つまたは 2 つの単語、モデル番号 (オールインワンを含む)

その結果、投稿から抽出されたテキストは次のようになりました。

  1. 廃止された HP C9900A フォト スキャナ
  2. 彼の古い X 線をスキャンします。
  3. 新しいエプソン V700 スキャナー
  4. HP ScanJet 4850 スキャナー
  5. Epson Perfection 3170 スキャナー

この正規表現ソリューションは、ある意味で機能しました。

于 2015-12-08T01:04:45.027 に答える