『自然言語処理の基本と技術』

1章(自然言語処理の概要)

Semantris

  • Google AI: Semantic Experiences
    • Semantris

      “Semantris is a word association game […] Each time you enter a clue, the AI looks at all the words in play and chooses the ones it thinks are most related. Because the AI was trained on conversational text spanning a large variety of topics, it is able to make many types of associations.”

Semantrisの結果(昨年)

クエリ語マッチされた語消したかった語
internettelevision! website
writingpaper! pencil
bodyhair! ear
proteininsect! soybean
subjectgeology! geography
morningsnow! clock
pupilear! teacher

クエリ語マッチされた語消したかった語
monsterworm! pokemon
artpen! museum
pillegg?
awakenesscanoe?
neckchair?
gamerhat?
foodmusuem?

クエリ語マッチされた語消したかった語
alarmghost?
gumphotel! forest
insultnecklace?

宿題の結果

クエリ語マッチされた語消したかった語
voicepiano! sound
fakeonion! truth
sweethat! cake
listenfire! radio

クエリ語マッチされた語消したかった語
housegarden! neighborhood
sweetheart! chocolates
sportjogging! Yoga
sugarmilk! salt
vegetableturnip! onion

クエリ語マッチされた語消したかった語
funnyroller coaster?
skyhelicopter?
erectrictree! Telephone
treeErectric! Table
visionPollen! Tunnel
internetSoul! Twitter
animalFish! Hamster

感想

  • 同義語や反対語がそれほど通用しないことに気づいた
  • 主語,述語の関係になるように単語を入力すると関連性が高いことがわかった
  • tennis→sportsのように上位概念の言葉も関連性が高いこと
  • wrestling→sportsと入力したら関連がなかった
  • lunch→time,lunch→breakの組み合わせも関連がないと出た
  • 動詞と名詞の組み合わせも多い
  • “alphabet”に対して”Google”や”Video game”に対して”Nintendo”など固有名詞にも対応するのが興味深い

Semantrisの詳細

  • GoogleがTensorFlowというニューラル機械学習フレームワークで学習したモデルに基づく
  • 詳しい説明(データ・学習方法)は論文で確認できる
  • Google Colabで触れることができる(グーグルアカウントが必要)

『自然言語処理の基本と技術』1章(自然言語処理の概要)

自然言語対人工言語

自然言語

  • 英語,日本語などの“言語”
  • 「人間によって日常の意思疎通のために用いられる、文化的背景を持って自然に発展してきた言語」 (Wikipedia)

人工言語

  • エスペラント語

  • ナヴィ語

  • クリンゴン語

形式言語

プログラミング言語

COBOL

PROCEDURE DIVISION.
    *> count the number of chars in string, store in ws-cnt1
    INSPECT WS-STRING TALLYING WS-CNT1 FOR ALL CHARACTERS.
    DISPLAY "WS-CNT1 : "WS-CNT1.
    *> count just the A characters
    INSPECT WS-STRING TALLYING WS-CNT2 FOR ALL 'A'.
    DISPLAY "WS-CNT2 : "WS-CNT2.

SQL

SELECT sum(payment) AS total_payments
FROM payments_table
WHERE payment > 50

プログラミング言語

 1 +  2  * 3
 1 + (2  * 3)
(1 +  2) * 3
  • プログラミング言語ではどちらか一方の厳密に記述された文法をに基づき解釈され,(コンピュータの観点からすると)曖昧性はない
    • 間違った/曖昧な記述ではコンパイラーエラーなどを発する
  • Repl.itで様々なプログラミング言語をブラウザで体験できる

形式文法

基礎的なテキスト処理

品詞タグ付与

自然言語の文法の処理

技術と応用例

  • 仮名漢字変換 (IME)
    • Atok, MS-IME, Google IME
  • 機械翻訳
  • 音声翻訳
  • 検索エンジン
    • Google, Bing, Baidu, Yandex
    • Linguee: パラレルコーパスの検索

技術と応用例

  • スペル訂正
  • 対話システム
  • 質問応答 / Q&Aシステム

ファクトイド(factoid)

知識ベース・言語資源