124

iOS電子メールクライアントでは、電子メールに日付、時刻、または場所が含まれている場合、そのテキストはハイパーリンクになり、単にリンクをタップするだけで予定を作成したり、地図を見ることができます。それは、英語のメールだけでなく、他の言語でも機能します。私はこの機能が大好きで、彼らがどのようにそれをするのか理解したいと思います。Appleは電子メールで日付、時刻、住所をどのように見つけることができますか?

これを行う単純な方法は、多くの正規表現を使用してすべてを実行することです。しかし、私はこれがうまくスケールされず、特定の言語や日付形式などでしか動作しません。アップルはエンティティを抽出するために機械学習の概念を使用しなければならないと思います(午後8時、午後8時、 0800,20時20分、20時、20時00分、2000年など)。

アップルがエンティティを電子メールクライアントですばやく取り出すことができますか?このようなタスクを達成するために適用する機械学習アルゴリズムは何ですか?

+5

、特に正規表現のトリックの話です。私は彼らがそれに関する特許を持っていることを知っているので、おそらくあなたはそれを検索しようとすることができます。しかし、私はそれにも非常に興味があります。 +1 –

+15

実際、正規表現のトリックは、おそらくエラー率が非常に低いケースの99%をキャッチします。正規表現をうまく最適化すると、超高速です。だから、本当に単なる正規表現のセットであれば、私は驚くことはありません。 –

答えて

148

:ここではいくつかのGoogleはあなたが始めるために検索します。ここで

は、スタンフォード大学のSUTimeツールのデモです:

http://nlp.stanford.edu:8080/sutime/process

あなたは文書のnグラム(連続した単語)に関する属性を抽出します:

  • numberOfLetters
  • numberOfSymbolsを
  • 長さ
  • prev iousWord
  • nextWord
  • nextWordNumberOfSymbols
    ...

そして正と負の例分類アルゴリズムを使用して、それを養う:

Observation nLetters nSymbols length prevWord nextWord isPartOfDate 
"Feb."  3   1   4  "Wed"  "29th" TRUE 
"DEC"  3   0   3  "company" "went" FALSE 
... 

あなたは50例で逃げるかもしれないがそれぞれ、しかしより多くの賛美歌。その後、アルゴリズムはそれらの例に基づいて学習し、以前には見られなかった将来の例に適用することができる。前の単語は文字のみと多分ピリオド...

  • であり、現在の単語は、「2月」である場合には、このような

    • としてルールを学習する可能性があります

      「3月」、「」..

    • そして次の単語は "12番目"にあり、any_number ...
    • は、日付

    ここでは、パズルの

  • +4

    面白い!私はそのようには決してしていない。ありがとうございます。 – Martin

    +2

    エルチェル、あなたの意見では、それにはどんな種類のモデルが最適でしょうか?ベイジアン? – Martin

    +5

    私はこのようなアプローチが、約f-measureよりも優れた性能を発揮しないと確信しています。 0.9である。 (注意してください、これはただの感情です、私は間違っているかもしれません)。一方で、最も一般的なフォーマットをすべてエンコードしてより良い方法(おそらく最も頻繁なフォーマットは見逃せないことを考えると0.99+)を実行し、実行時に+を実装する方が速くなるというネイティブなアプローチを除いては、 –

    5

    一方の部分はNSDataDetectorクラスかもしれない被写体に、Googleのエンジニアによってdecent videoです。それは電話番号のようないくつかの標準タイプを認識するために使用されます。

    +2

    これは、NSDataDetectorクラスがこれを実装するための努力の結果だと思われます。問題はクラスが内部でどのように機能するかです。 –

    +3

    それはNSRegularExpression.hにあるので、指摘されているように、正規表現のセットだけである可能性が高いようです。 – riffraff

    109

    これはAppleが実際に開発した技術のうち、Apple Data Detectorsと呼ばれています。あなたがここにそれについての詳細を読むことができます:

    http://www.miramontes.com/writing/add-cacm/

    は、基本的にはテキストを解析し、データの特定の部分を表すパターンを検出し、それにOS-文脈アクションを適用します。それはきちんとしている。

    +24

    これは正解です。他の答えはあなたがどのようにそれを行うことができるかを教えてくれるかもしれませんが、これはAppleが*どうしているかを示しています。 – LaC

    +2

    私たちは書き込むことでもう少し詳しく説明できますか?単一のリンクエントリはそれほど追加されません – shigeta

    +14

    ああ、私のウェブサイトのすべてのヒットはどこから来たのですか:FWIW、私はATGの時代にApple Data Detectorsのプロジェクトリードでした。私がここに加えることができるのは、これはOS 8と9のテクノロジーだけだということです。OS Xへの飛躍は決してありませんでした。明らかに、OS XとIOSでは同様のことが起きています。実際には言えませんが、アーキテクチャが少し違っていても驚かないでしょう。それにもかかわらず、ある種の文法/構文解析システムが依然としてその中心にあると私は期待しています。最近のコンピュータは高速で、簡単な文法はかなり安いです。 –

    2

    これまで、pyparsingを使用してこれを行うパーサーを作成しました。それは本当に非常に単純です、あなたはちょうどすべての異なる方法を得る必要がありますが、それほど多くはありません。ほんの数時間しかかかりませんでした。

    +0

    [Miramontes](http://www.miramontes.com/writing/add-cacm/)からの抽出 "URLなどのアトミック構造に対して認識プログラムをハードコードすることは難しくありませんが、複雑な構造を作成するプロセスを開くアーキテクチャ」 – Remy

    関連する問題