web-dev-qa-db-ja.com

Appleメール内の日付、時刻、アドレスを見つけるにはどうすればいいですか?

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

これを行うための単純な方法は、多くの正規表現を用意し、それらすべてを実行することです。ただし、これはあまりうまくスケーリングできず、特定の言語や日付形式などでのみ動作します。Appleは、機械学習の概念を使用してエンティティを抽出する必要があると思います(8:00 PM、8PM、 8:00、0800、20:00、20h、20h00、2000など)。

Appleがその電子メールクライアントでエンティティを非常に迅速に抽出できる方法はありますか?そのようなタスクを達成するには、どの機械学習アルゴリズムを適用しますか?

128
Martin

おそらく Information Extraction テクニックを使用します。

スタンフォードのSUTimeツールのデモは次のとおりです。

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

ドキュメント内のn-gram(連続した単語)に関する属性を抽出します。

  • numberOfLetters
  • numberOfSymbols
  • 長さ
  • previousWord
  • nextWord
  • nextWordNumberOfSymbols
    ...

そして、分類アルゴリズムを使用して、正と負の例を提供します。

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

それぞれの50の例で逃げるかもしれませんが、もっと楽しいです。次に、アルゴリズムはそれらの例に基づいて学習し、これまでに見たことのない将来の例に適用できます。

次のようなルールを学習する場合があります

  • 前のWordが文字のみで、場合によってはピリオドの場合...
  • 現在のWordは「2月」、「3月」、「the」にあります...
  • そして次のWordは「12番目」にあり、any_number ...
  • その後、日付です

これは まともな動画 この件についてのGoogleエンジニアによるものです

152
Neil McGuigan

それは技術ですAppleは実際に非常に長い時間前にApple Data Detectors。詳細については、こちらをご覧ください。

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

基本的に、テキストを解析し、特定のデータを表すパターンを検出し、OSコンテキストアクションを適用します。きれいです。

110
jeffehobbs

これは、時間表現の識別と解析と呼ばれます。開始するためのGoogle検索を次に示します。

https://www.google.com/#hl=en&safe=off&sclient=psy-ab&q=timebank+timeml+timex

https://www.google.com/#hl=en&safe=off&sclient=psy-ab&q=temporal+expression+tagger

18
Gregory Marton

パズルの一部はNSDataDetectorクラスです。電話番号などの標準タイプを認識するために使用されます。

5
hburde

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

Appleは、その方法について特許を取得しています コンピューターデータ内の構造に対してアクションを実行するためのシステムと方法 、そしてこの特許に関するストーリーはこちら apples-patent-on-nsdatadetector =

1
Guibin