1. ホーム
  2. machine-learning

[解決済み] Appleはどのように電子メールの日付、時間、アドレスを見つけるのですか?

2022-06-28 03:35:32

質問

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

これを行う素朴な方法は、多くの正規表現を用意し、それらすべてを実行することです。しかし、これはあまりうまく拡張できず、特定の言語や日付の形式などに対してのみ機能することでしょう。Apple は、エンティティ (8:00PM, 8PM, 8:00, 0800, 20:00, 20h, 20h00, 2000 など) を抽出するために、何らかの機械学習の概念を使用しているに違いないと私は考えています。

Apple のメールクライアントで、どのようにしてエンティティをすばやく抽出することができるのか、見当はつきますか?そのようなタスクを達成するために、どのような機械学習アルゴリズムを適用しますか?

どのように解決するのですか?

彼らはおそらく 情報抽出 のテクニックを使っているのでしょう。

スタンフォード大学のSUTimeツールのデモを紹介します。

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

文書中のN-gram(連続した単語)についての属性を抽出することになります。

  • レター数
  • 記号の数
  • 長さ
  • 前の単語
  • 次の単語
  • 次の単語の記号の数

    ...

そして、分類アルゴリズムを使って、ポジティブな例とネガティブな例を与えるのです。

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

それぞれ50の例で済むかもしれませんが、多ければ多いほどよいでしょう。そうすれば、アルゴリズムはそれらの例に基づいて学習し、これまで見たことのない将来の例にも適用できるようになります。

次のようなルールを学習するかもしれません。

  • 前の単語が文字とピリオドのみであれば
  • で、現在の単語が "february", "mar.", "the" ... である場合。
  • で、次の単語は "twelfth", any_number ... にある。
  • は日付です。

ここでは まともなビデオ Google のエンジニアによるこのテーマに関する