См. следующий пример:
«Найдите мне телефон Android с 4 ГБ оперативной памяти и не менее 16 ГБ встроенной памяти».
Прежде всего вам нужен список слов, которые вы можете напрямую извлечь из ввода и вставить в свой поисковый запрос. Это самая простая часть.
"найдите мне телефон на базе Android с 4 ГБ оперативной памяти и не менее 16 ГБ встроенной памяти".
Далее на входе будут числа.
«Найдите мне телефон Android с 4 ГБ оперативной памяти и не менее 16 ГБ встроенной памяти».
Вы бы уже извлекли слова «андроид» и «телефон». Теперь вам нужно извлечь числа — вместе с 2 или 3 словами до и после них.
"найдите мне телефон Android с 4 ГБ оперативной памяти и не менее 16 ГБ встроенной памяти".
Следующим шагом будет выяснить, что означают эти цифры. Для этого вам понадобится таблица, подобная приведенной ниже: (Давайте назовем эту таблицу «Свойства»)
Сравните приведенную выше таблицу с числами и словами вокруг чисел, которые вы извлекли из ввода:
4 --- телефон с ГБ,оперативной памятью 6 --- не менее,ГБ
Используя достойный алгоритм и таблицу свойств, вы могли бы легко понять, что означают числа. Просто сравните каждое число с каждым свойством - сначала проверьте, попадает ли число число в диапазон свойства, а затем проверьте, находятся ли слова вокруг числа во входных данных совпадают с тегами свойства. Теперь, когда вы знаете, что означает каждое из чисел (4 = оперативная память, 6 = хранилище), вам нужно проверить входные данные на наличие неравенств.
Проверка неравенства:
Если есть такие фразы, как «не менее», «не более чем», «не более» и т. д., то у вас есть неравенство . В нашем случае вы не найдете таких слов рядом с цифрой 4, но вы можете найти термин «по крайней мере» рядом с цифрой 6. Это означает, что пользователь хочет телефон с ровно 4 ГБ оперативной памяти (используйте == ), но внутреннее пространство для хранения может быть больше или равно 6 ГБ (используйте >=).
Также обратите внимание, что если вы не можете связать число со свойством, наиболее вероятно, что число является ценой.
Есть и другие функции, которые вы могли бы добавить... например, позволить пользователю сортировать результаты в порядке возрастания/убывания свойства. Например:
"найдите мне телефон Android с 4 ГБ оперативной памяти и не менее 16 ГБ встроенной памяти. Покажите дешевые сначала"
person
farizrahman4u
schedule
28.05.2015