Как, по вашему мнению, работает функция «Быстрое добавление» в Календаре Google? - PullRequest
7 голосов
/ 02 июня 2010

Я думаю о проекте, который мог бы использовать функциональность, аналогичную тому, как «Быстрое добавление» обрабатывает синтаксический анализ естественного языка во что-то, что можно понять с некоторой степенью семантики. Мне интересно лучше понять это и подумать, что ты думаешь о том, как это можно реализовать.


Если вы не знаете, что такое «Быстрое добавление», ознакомьтесь с Google KB .


6/4/10 Обновление
Дополнительное исследование «Разбор естественных языков» (NLP) дает результаты, которые НАМНОГО шире, чем то, что, на мой взгляд, фактически реализовано в чем-то вроде «Быстрое добавление». Учитывая, что эта функция ожидает определенных типов ввода, а не текста в произвольной форме, я думаю, что это гораздо более узкая реализация НЛП. Если бы кто-то мог предложить более узкую тему, которую я мог бы исследовать, а не всю ширину НЛП, это было бы очень ценно.

Тем не менее, я нашел замечательную коллекцию ресурсов о НЛП , включая этот замечательный FAQ .

Ответы [ 2 ]

3 голосов
/ 07 июня 2010

Я бы начал с выбора стандартного способа представления всей информации, которая меня интересует: имя события, время начала / окончания (и дата), список гостей, местоположение. Например, я мог бы использовать нотацию XML как это:

<event>
    <name>meet Sam</name>
    <starttime>16:30 07/06/2010</starttime>
    <endtime>17:30 07/06/2010</endtime>
</event>

Тогда я бы хотел создать свод дневниковых записей о датах, помеченных их XML-формами. Как я собираю данные? Ну, если бы я был Google, у меня, вероятно, были бы самые разные способы. Поскольку я - это я, я бы, вероятно, начал с того, что записывал все возможные способы выражения такого рода вещей, а затем комментировал их вручную. Если бы я мог добавить к этому, просматривая электронные письма друзей и еще много чего, тем лучше.

Теперь у меня есть корпус, он может служить набором юнит-тестов. Мне нужно кодировать парсер, чтобы соответствовать тестам. Парсер должен перевести строку естественного языка в логическую форму моей аннотации. Во-первых, он должен разбить строку на составляющие слова. Это называется токенизацией, и для этого есть готовое программное обеспечение. (Например, см. NLTK .) Чтобы интерпретировать слова, я бы искал закономерности в данных: например, текст после 'at' или 'in' должен быть помечен как местоположение; «за X минут» означает, что мне нужно добавить это количество минут к времени начала, чтобы получить время окончания. Статистические методы, вероятно, были бы здесь излишними - лучше всего создать серию правил, закодированных вручную, которые выражают ваши собственные знания о том, как интерпретировать слова, фразы и конструкции в этой области.

0 голосов
/ 18 июня 2010

Казалось бы, в действительности нет узкого подхода к этой проблеме. Я хотел избежать необходимости таскивать всю НЛП, чтобы найти решение, но я не нашел никакой альтернативы. Я обновлю это, если найду действительно отличное решение позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...