Идентификация контактов с использованием распознавания речи
IDENTIFICATION OF CONTACTS WITH THE USE OF SPEECH RECOGNITION

УРОВЕНЬ ТЕХНИКИ
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Это изобретение относится к идентификации контактов на основе речевых вводов.
УРОВЕНЬ ТЕХНИКИ
Мобильные устройства и информационно-развлекательные (IVI) системы транспортного средства часто стремятся обеспечивать распознавание произносимых команд и других входных сигналов. Однако механизмы распознавания голоса имеют затруднение при идентификации уникальных имен и слов. Например, получение системы распознавания голоса для идентификации необычно записанного имени может приводить к неправильной интерпретации голосовых команд.
Системы и способы, раскрытые в данном документе, обеспечивают улучшенный подход к идентификации имен в голосовых командах.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
Одним аспектом изобретения является способ, содержащий этапы, на которых с помощью компьютерной системы: (a) вычисляют первые свернутые значения для множества первых строк в соответствии со свертывающей функцией; (b) принимают две или более вторых строк из алгоритма обработки голоса; (c) вычисляют вторые свернутые значения для двух или более вторых строк в соответствии со свертывающей функцией; и (d) выбирают выбранную строку из множества первых строк, имеющую соответствующее первое свернутое значение, совпадающее с одним из вторых свернутых значений.
При этом, свертывающая функция принимает входную строку и обеспечивает выходную строку, в которой согласные звуки входной строки представлены первым двоичным значением, а гласные звуки представлены вторым двоичным значением.
При этом, свертывающая функция принимает входную строку и обеспечивает выходную строку, в которой смежные согласные звуки во входной строке представлены одним экземпляром первого двоичного значения, а смежные гласные звуки во входной строке представлены одним экземпляром второго двоичного значения.
Способ также содержит этапы, на которых: оценивают метаданные, связанные с двумя или более вторыми строками; определяют, что никакая исправленная строка не записана в метаданные для какой-либо из двух или более вторых строк; и выполняют этапы (c) и (d) в ответ на определение того, что никакая исправленная строка не записана в метаданные для какой-либо из двух или более вторых строк.
При этом, прием двух или более вторых строк из алгоритма обработки голоса содержит прием показателя достоверности для каждой второй строки из двух или более вторых строк, причем способ также содержит этапы, на которых: определяют, что показатели достоверности всех из двух или более вторых строк падают ниже порогового значения; и выполняют этапы (c) и (d) в ответ на определение того, что показатели достоверности всех из двух или более вторых строк падают ниже порогового значения.
При этом, этап (d) также содержит: этап, на котором определяют, что несколько первых свернутых значений совпадают с одним или более совпадающими вторыми значениями вторых свернутых значений; этап (e), на котором в ответ на определение того, что несколько первых свернутых значений совпадают с одним или более совпадающими вторыми значениями, фильтруют часть первых строк, соответствующих нескольким первым свернутым значениям, для получения отфильтрованного набора строк; и этап (f), на котором выбирают выбранную строку из отфильтрованного набора строк.
При этом, фильтрация части первых строк содержит фильтрацию в соответствии с текущим географическим местоположением и местоположениями, в которых были приняты команды, включающие в себя часть вторых строк.
При этом, фильтрация части первых строк содержит фильтрацию части вторых строк в соответствии с текущим временем и моментами времени, в которые были приняты команды, включающие в себя часть вторых строк.
Способ также содержит этапы, на которых: определяют, что некоторые из нескольких свернутых значений превышают пороговое значение; и выполняют этапы (e) и (f) в ответ на определение того, что некоторые из нескольких свернутых значений превышают пороговое значение.
При этом, ром фильтрация части первых строк содержит фильтрацию части первых строк в соответствии с текстовым сходством с частью вторых строк, соответствующих одному или более совпадающим вторым значениям.
Другим аспектом изобретения является система, содержащая одно или более устройств обработки и одно или более устройств памяти, соединенных с одним или более устройствами обработки, причем одно или более устройств памяти хранят выполняемый код, эффективный для того, чтобы побуждать одно или более устройств обработки: (a) вычислять первые свернутые значения для множества первых строк в соответствии со свертывающей функцией; (b) принимать две или более вторых строк из алгоритма обработки голоса; (c) вычислять вторые свернутые значения для двух или более вторых строк в соответствии со свертывающей функцией; и (d) выбирать выбранную строку из множества первых строк, имеющую соответствующее первое свернутое значение, совпадающие с одним из вторых свернутых значений.
При этом, свертывающая функция запрограммирована на прием входной строки и обеспечение выходной строки, в которой согласные звуки входной строки представлены первым двоичным значением, а гласные звуки представлены вторым двоичным значением.
При этом, свертывающая функция запрограммирована на прием входной строки и обеспечение выходной строки, в которой смежные согласные звуки во входной строке представлены одним экземпляром первого двоичного значения, а смежные гласные звуки во входной строке представлены одним экземпляром второго двоичного значения.
При этом, выполняемый код дополнительно эффективен, чтобы побуждать один или более процессоров: оценивать метаданные, связанные с двумя или более вторыми строками; и выполнять этапы (c) и (d) только в том случае, если в метаданных для какой-либо из двух или более вторых строк не записана никакая исправленная строка.
При этом, выполняемый код дополнительно эффективен, чтобы побуждать один или более процессоров: принимать две или более вторых строк из алгоритма обработки голоса, в том числе принимая показатель достоверности для каждой второй строки из двух или более вторых строк; и выполнять этапы (c) и (d), если показатели достоверности всех из двух или более вторых строк падают ниже порогового значения.
При этом, один или более процессоров выполнять этап (d) с помощью этапов, на которых: если несколько первых свернутых значений совпадают с одним или более совпадающими вторыми значениями вторых свернутых значений: (e) фильтруют часть первых строк, соответствующих нескольким первым свернутым значениям, для получения отфильтрованного набора строк; и (f) выбирают выбранную строку из отфильтрованного набора строк.
При этом, выполняемый код дополнительно эффективен, чтобы побуждать один или более процессоров фильтровать часть первых строк путем фильтрации в соответствии с текущим географическим местоположением и местоположениями, в которых были приняты команды, включающие в себя часть вторых строк.
При этом, выполняемый код дополнительно эффективен, чтобы побуждать один или более процессоров фильтровать часть первых строк путем фильтрации части вторых строк в соответствии с текущим временем и моментами времени, в которые были приняты команды, включающие в себя часть вторых строк.
При этом, выполняемый код дополнительно эффективен, чтобы побуждать один или более процессоров выполнять этапы (e) и (f), если некоторые из нескольких свернутых значений превышают пороговое значение.
При этом, выполняемый код дополнительно эффективен, чтобы побуждать один или более процессоров фильтровать часть первых строк путем фильтрации части первых строк в соответствии с текстовым сходством с частью вторых строк, соответствующих одному или более совпадающим вторым значениям.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Для того чтобы были лучше понятны преимущества изобретения, более конкретное описание изобретения, вкратце описанного выше, будет представлено путем ссылки на определенные варианты выполнения, проиллюстрированные на приложенных чертежах. Понимания, что эти чертежи изображают только типичные варианты выполнения изобретения и в связи с этим не рассматриваются, как ограничивающие его объем охраны, изобретение будет описано и объяснено с дополнительной спецификой и подробностью посредством использования сопровождающих чертежей, на которых:
Фиг. 1 представляет собой схематическую структурную схему среды, в которой реализуются системы и способы в соответствии с вариантом выполнения настоящего изобретения;
Фиг. 2 представляет собой схематическую структурную схему примерного вычислительного устройства, подходящего для реализации способов в соответствии с вариантами выполнения настоящего изобретения;
Фиг. 3 представляет собой схематическую структурную схему, иллюстрирующую компоненты, реализующие способы в соответствии с вариантом выполнения настоящего изобретения; и
Фиг. 4 представляет собой блок-схему последовательности операций способа идентификации контакта в голосовых командах в соответствии с вариантом выполнения настоящего изобретения;
Фиг. 5 представляет собой блок-схему последовательности операций способа свертывания строки в соответствии с вариантом выполнения настоящего изобретения; и
Фиг. 6 представляет собой блок-схему последовательности операций способа фильтрации совпадающих контактов в соответствии с вариантом выполнения настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
Со ссылкой на Фиг. 1 среда 100, в которой могут быть реализованы описанные в данном документе способы, может включать в себя транспортное средство 102, имеющее информационно-развлекательную (IVI) систему 104 транспортного средства. Система 104 IVI может иметь некоторые или все атрибуты вычислительного устройства общего назначения. Система 104 IVI может быть соединена с экраном 106, который может быть выполнен в виде сенсорного экрана. Один или более динамиков 108 могут быть соединены с системой 104 IVI. Один или более микрофонов 110 могут быть соединены с системой 104 IVI.
Как известно в уровне техники, система 104 IVI может быть запрограммирована на обеспечение интерфейса для выбора аудио содержимого, воспроизводимого с использованием динамиков 108 или других аудио выводов. Аудио содержимое может быть выбрано из одного или более источников аудио содержимого, соединенных с системой 104 IVI, таких как радио, проигрыватель компакт-дисков (CD) и т.п. Система 104 IVI может дополнительно отображать видео содержимое на экране 106 или одном или более других экранах, расположенных в транспортном средстве 102. Система 104 IVI может отображать видео содержимое, выбираемое с одного или более источников видео содержимого, таких как DVD-плеер, сопряженное мобильное устройство или другой источник видеоданных.
Система 104 IVI может дополнительно быть соединена с одной или более системами самого транспортного средства 102 и обеспечивает отображение информации о состоянии транспортного средства 102 и прием входных сигналов, изменяющих работу одной или более систем самого транспортного средства 102, таких как климат-контроль, рабочие параметры двигателя и т.п.
Система 104 IVI может реализовывать систему голосового управления, посредством которой выходные сигналы микрофона 110 интерпретируются в команды для управления работой системы 104 IVI или одной или более систем транспортного средства 102 с помощью системы 104 IVI. Например, Система 104 IVI может реализовывать систему голосового управления FORD SYNC. Контроллер 104 может принимать управляющие входные сигналы от системы 104 IVI и обеспечивать выходные сигналы для отображения на экране 106 системы 104 IVI.
Транспортное средство 102 обычно перевозит водителя и одного или более пассажиров. Водитель или пассажир может принести мобильное устройство 112 в транспортное средство 102. Мобильное устройство 112 водителя или пассажира может сопрягаться с системой 104 IVI, например, через BLUETOOTH или какой-либо другой беспроводной протокол. В некоторых вариантах выполнения управляющие входные сигналы и содержимое могут быть приняты с помощью мобильного устройства 112 и перенаправлены в систему 104 IVI. В таких вариантах выполнения мобильное устройство 112 может реализовывать систему голосового управления и включает в себя микрофон и динамик для приема входных сигналов и обеспечения звуковой обратной связи. Соответственно, хотя способы, раскрытые в данном документе, раскрыты как выполняемые с помощью системы 104 IVI, они также могут быть реализованы с использованием мобильного устройства 112.
В некоторых вариантах выполнения система 104 IVI может связываться с серверной системой 114. Например, система 104 IVI может связываться с серверной системой 114 с использованием встроенных возможностей беспроводной связи, мобильного устройства 112 или какого-либо другого устройства.
Связь с серверной системой 114 может быть облегчена с помощью сети вышек 116 сотовой связи. Вышки 116 сотовой связи также могут обмениваться данными с серверной системой 114, например, посредством сети 118. Сеть 118 может включать в себя некоторые или все из локальной вычислительной сети (LAN), глобальной вычислительной сети (WAN), сети Интернет и любого другого проводного или беспроводного сетевого соединения.
В некоторых вариантах выполнения некоторые или все из способов, раскрытых в данном документе, реализуются с помощью серверной системы 114, причем результаты передаются в систему 104 IVI или на мобильное устройство 112.
Фиг. 2 представляет собой структурную схему, иллюстрирующую примерное вычислительное устройство 200. Вычислительное устройство 200 может быть использовано для выполнения различных процедур, таких как обсуждаемые в данном документе. Система 104 IVI, мобильное устройство 112 и серверная система 114 могут иметь некоторые или все из атрибутов вычислительного устройства 200.
Вычислительное устройство 200 включает в себя один или более процессоров 202, одно или более устройств 204 памяти, один или более интерфейсов 206, одно или более массовых запоминающих устройств 208, одно или более устройств 210 ввода/вывода (I/O) и устройство 230 отображения, все из которых соединены с шиной 212. Процессор(ы) 202 включае(ю)т в себя один или более процессоров или контроллеров, которые выполняют инструкции, хранящиеся на устройстве(ах) 204 памяти и/или массовом(ых) запоминающем(их) устройстве(ах) 208. Процессор(ы) 202 также может(могут) включать в себя различные типы машиночитаемых носителей, таких как кэш-память.
Устройство(а) 204 памяти включае(ю)т в себя различные машиночитаемые носители, такие как энергозависимая память (например, запоминающее устройство 214 с произвольным доступом (RAM)) и/или энергонезависимая память (например, постоянное запоминающее устройство (ROM) 216). Устройство(а) 204 памяти также может(могут) включать в себя перезаписываемое ROM, такое как флэш-память.
Массовое(ые) запоминающее(ие) устройство(а) 208 включае(ю)т в себя различные машиночитаемые носители, такие как магнитные ленты, магнитные диски, оптические диски, твердотельная память (например, флэш-память) и т.п. Как показано на Фиг. 2, конкретное массовое запоминающее устройство представляет собой жесткий диск 224. Различные приводы также могут быть включены в массовое(ые) запоминающее(ие) устройство(а) 208 для позволения чтения с и/или записи на различные машиночитаемые носители. Массовое(ые) запоминающее(ие) устройство(а) 208 включае(ю)т в себя съемные носители 226 и/или несъемные носители.
Устройство(а) 210 I/O включае(ю)т в себя различные устройства, которые позволяют ввод или извлечение данных и/или другой информации в или из вычислительного устройства 200. Примерное(ые) устройство(а) 210 I/O включае(ю)т в себя устройства управления курсором, клавиатуры, кнопочные панели, микрофоны, мониторы или другие устройства отображения, динамики, принтеры, платы сетевого интерфейса, модемы объективы, ПЗС-матрицы или другие устройства захвата изображений и т.п.
Устройство 230 отображения включает в себя любой тип устройства, способного отображать информацию для одного или более пользователей вычислительного устройства 200. Примеры устройства 230 отображения включают в себя монитор, дисплейный терминал, видеопроекционное устройство и т.п.
Интерфейс(ы) 206 включае(ю)т в себя различные интерфейсы, которые позволяют вычислительному устройству 200 взаимодействовать с другими системами, устройствами или вычислительными средами. Примерный(ые) интерфейс(ы) 206 включают в себя любое количество различных сетевых интерфейсов 220, таких как интерфейсы для локальных вычислительных сетей (LAN), глобальных вычислительных сетей (WAN), беспроводных сетей и сети Интернет. Другой(ие) интерфейс(ы) включае(ю)т в себя пользовательский интерфейс 218 и интерфейс 222 периферийных устройств. Интерфейс(ы) 206 также может(могут) включать в себя один или более периферийных интерфейсов, таких как интерфейсы для принтеров, указательных устройств (мышь, трекпад и т.д.), клавиатур и т.п.
Шина 212 позволяет процессору(ам) 202, устройству(ам) 204 памяти, интерфейсу(ам) 206, массовому(ым) запоминающему(им) устройству(ам) 208 устройству(ам) 210 I/O и устройству 130 отображения связываться друг с другом, а также с другими устройствами или компонентами, соединенными с шиной 212. Шина 212 представляет собой один или более из нескольких типов шинных структур, таких как системная шина, шина PCI, шина IEEE 1394, шина USB и т.п.
В целях иллюстрации программы и другие выполняемые программные компоненты показаны в данном документе в виде отдельных блоков, хотя следует понимать, что такие программы и компоненты могут находиться в различные моменты времени в различных компонентах хранения вычислительного устройства 200, и выполняются с помощью процессора(ов) 202. Альтернативно, системы и процедуры, описанные в данном документе, могут быть реализованы в аппаратном обеспечении или комбинации аппаратного обеспечения, программного обеспечения, и/или встроенного программного обеспечения. Например, одна или более интегральных схем специального назначения (ASIC) могут быть запрограммированы на выполнение одной или более систем и процедур, описанных в данном документе.
Со ссылкой на Фиг. 3 проиллюстрированные компоненты могут быть использованы для реализации способов в соответствии с вариантом выполнения изобретения. Выходной сигнал 302 микрофона, например, цифровое представление выходного сигнала микрофона 110, может представлять собой входной сигнал для модуля 304 распознавания речи. Модуль 304 распознавания речи может выполняться системой 104 IVI, мобильным устройством 112 или серверной системой 114. Например, выходной сигнал 302 может быть передан в серверную систему 114 для голосового анализа, а результаты анализа возвращаются в систему 104 IVI или мобильное устройство 112.
Модуль 304 распознавания речи может представлять собой любой алгоритм распознавания речи, известный в уровне техники, и может представлять собой алгоритм машинного обучения, который опирается на модель 306 машинного обучения, которая обучается с использованием библиотек обучающих данных.
Результатом обработки с помощью модуля 304 распознавания речи может быть набор строк-кандидатов 308. В примерах, раскрытых в данном документе, распознавание трудно идентифицируемых имен представляет собой особенно полезное применение. Соответственно, строки-кандидаты 308 могут представлять собой имена, оцениваемые модулем 304 распознавания речи как соответствующие речи, записанной в выходном сигнале 302. В некоторых вариантах выполнения каждая из строк-кандидатов 308 может иметь показатель достоверности, указывающий вероятность того, что строка-кандидат представляет собой правильную интерпретацию выходного сигнала 302, например, значение от 0 до 1, причем большее значение указывает на наибольшую надежность. В некоторых вариантах выполнения строки-кандидаты 308 могут иметь показатели достоверности, превышающие пороговое значение и/или первые N показателей (например, 3-10).
В некоторых вариантах выполнения могут использоваться два пороговых значения. Первое пороговое значение, указывающее на успешную интерпретацию, и второе пороговое значение, указывающее на низкую достоверность, но потенциально релевантный результат. Соответственно, строки-кандидаты могут включать в себя одну успешную строку-кандидата, которая соответствует первому пороговому значению, или несколько строк-кандидатов, которые соответствуют второму пороговому значению, но не первому пороговому значению.
Строки-кандидаты 308 могут быть введены в логический модуль 310, например, когда строки-кандидаты 308 имеют показатели достоверности, которые ниже первого порогового значения. Логический модуль 310 может выполнять способ на Фиг. 4. Выходной сигнал логического модуля 310 может включать в себя результат 312, который представляет собой строку, определяемую как имеющую высокую вероятность соответствия выходному сигналу 302.
Логический модуль 310 может сохранять контакты 314 для пользователя и метаданные для контактов пользователя и другие строки, обрабатываемые логическим модулем 310. Как описано ниже со ссылкой на Фиг. 4, метаданные могут как использоваться, так и обновляться логическим модулем 310.
Со ссылкой на Фиг. 4 проиллюстрированный способ 400 может выполняться с помощью логического модуля 310. Как отмечено выше, этапы способа 400 могут выполняться системой 104 IVI, мобильным устройством 112 или серверной системой 114 или могут быть распределены среди этих устройств.
Способ 400 может включать в себя прием 402 одной или более строк-кандидатов 308 и показателей достоверности, соответствующих каждому из одного или более кандидатов, и оценивание 404 того, совпадает ли какой-либо из одного или более кандидатов с контактом пользователя, т.е. пользователя, который представляет собой объект способа 400. Набор кандидатов может представлять собой набор контактов, включенных в контакты и метаданные 314. Контакты могут храниться в системе 104 IVI, мобильном устройстве 112 или в учетной записи пользователя, доступной серверной системе 114 или какому-либо другому вычислительному устройству.
Если это так, способ 400 может включать в себя оценивание 406 того, сохранена ли известная коррекция в метаданных для совпадающего кандидата. В частности, контакты и метаданные 314 могут хранить строки и метаданные для строк, причем строки могут включать в себя как контакты, так и кандидатов 308, которые были оценены в соответствии со способом 400. Метаданные для строки могут включать в себя любые коррекции для этой строки, т.е. запись случая, когда строка была представлена, но пользователь в конечном итоге выбрал другую строку в качестве желаемого вывода. В связи с этим другая строка может быть сохранена в метаданных для строки в качестве коррекции, и в связи с этим способ 400 может включать в себя оценивание 406 того, указывают ли метаданные для совпадающего контакта на другой контакт.
Например, для каждого контакта или строки-кандидата, которая обрабатывается в соответствии со способом 400, может быть сохранена структура данных, которая может быть представлена в виде <контакт или строка-кандидат>, <список_коррекций>, <свернутая_форма>, <успехи>, <неудачи>. Эти значения могут быть обновлены в соответствии со способом 400, как описано ниже.
Если на этапе 404 обнаруживают, что структура данных для совпадающего контакта включает в себя одно или более значений в поле <список_коррекций>, способ 400 может включать в себя представление 408 пользователю одной или более строк в поле <список_коррекций>. В некоторых вариантах выполнения этап 408 может включать в себя представление нескольких вариантов, например, некоторых или всех из совпадающих контактов, идентифицированных на этапе 404, для выбора пользователем из значений в поле <список_коррекций> для совпадающего контакта и возможно одной или более других строк, например, одной или более из других строк-кандидатов, принятых на этапе 402.
Этап 408 может дополнительно включать в себя сохранение выбора. Например, если выбирают строку в поле <список_коррекций>, этот выбор может быть использован для увеличения числа коррекций для этой строки в метаданных. Если на этапе 408 выбирают или пользователь вводит другую строку, то это значение может быть сохранено в поле <список_коррекций> структуры данных для совпадающего контакта.
Если в поле <список_коррекций> отсутствуют значения, найденные на этапе 406, то способ 400 может включать в себя оценивание 410 того, превышает ли показатель достоверности найденного на этапе 404 совпадающего кандидата пороговое значение, например, первое пороговое значение. Если это так, то совпадающий контакт может быть возвращен 412 пользователю и/или использован при выполнении команды. В некоторых вариантах выполнения этап 410 может включать в себя оценку полей <успехи> и <неудачи> для совпадающего контакта. Если значение в поле <успехи> превышает пороговое значение успехов, значение в поле <неудачи> ниже порогового значения неудач, и/или отношение значения в поле <успехи> к значению в поле <неудачи> превышает пороговое значение отношения, то достоверность для совпадающего контакта может быть определена 410 как высокая. В некоторых вариантах выполнения пользователь может обеспечивать ввод, указывающий, что совпадающий контакт имел правильную интерпретацию или нет. Этот ввод может быть записан в метаданные для совпадающего контакта. Например, если пользователь подтверждает, что результат является правильным, значение поля <успехи> в структуре данных для совпадающего контакта может быть увеличено. Если нет, то значение поля <неудачи> может быть увеличено.
Если на этапе 404 не находят никакого совпадающего контакта, способ 400 может включать в себя оценивание 414  того, сохранены ли какие-либо структуры данных для какой-либо из строк-кандидатов, принятых на этапе 402, и записана ли известная коррекция в поле <список_коррекций> какой-либо из этих структур данных. Если это так, то известная коррекция будет возвращена 416 пользователю и/или использована для выполнения команды. В случае, когда несколько строк-кандидатов имеют известные коррекции в метаданных, этап 416 может включать в себя возвращение нескольких известных коррекций пользователю и прием выбора одной из этих коррекций. Количество коррекций для выбранной известной коррекции может быть увеличено в ответ на выбор пользователя.
Если на этапе 414 не обнаруживают никакую известную коррекцию, или не обнаруживают 410, что показатель достоверности соответствуют первому пороговому значению, то может быть выполнена дополнительная обработка, чтобы попытаться идентифицировать контакт.
Например, способ 400 может включать в себя свертывание 418 строк-кандидатов. Со ссылкой на Фиг. 5 свертывание строки может включать в себя замену 502 каждого согласного звука на 1, и замену 504 каждого гласного звука на 0. В некоторых вариантах выполнения свертывание может включать в себя замену 506 смежных 1 на одну 1, и замену 508 смежных 0 на один 0. Например, имя «Peter» станет «10101». Альтернативное написание, такое как «Pieter», станет «100101» после этапов 502 и 504 и станет «10101» после этапов 506 и 508. В другом примере французское имя «Thibault» произносится точно так же, как «Tebow». Свернутые значения этих имен идентичны: «Thibault» -> 11010011 -> 10101 и «Tebow» -> 10101.
В некоторых вариантах выполнения этапы 502-508 могут не выполняться в виде отдельных этапов. Например, позиция бита в выходном слове может быть установлена на 1 или 0, когда встречается согласный звук или гласный звук, и следующая позиция бита не будет установлена, пока не встретится противоположный тип символа. Таким образом, строки согласных звуков будут приводить к установке одного значения бита, и отсутствует промежуточное хранение нескольких бит для нескольких смежных согласных звуков и гласных звуков в соответствии с этапами 502-504.
Со ссылкой на Фиг. 4 после свертывания 418, свернутые формы строк-кандидатов могут быть сравнены 420 со свернутыми формами контактов пользователя, т.е. с полями <свернутая_форма> в структурах данных для контактов пользователя. Если  никакие свернутые формы строк-кандидатов не совпадают 422 с какой-либо из свернутых форм контактов пользователя, то может быть сообщено 424 о неудаче. Значения поля <свернутая_форма> могут храниться в структуре данных для каждого контакта и другой строки, представленной в метаданных. Таким образом, вычисление в соответствии со способом 400 может быть уменьшено. Сравнение свернутых значений также является вычислительно простым, что обеспечивает идентификацию совпадений, не требуя сложного анализа текста и речи. В других вариантах выполнения свернутая форма контактов и предварительно обработанных строк вычисляется при выполнении способа 400 по мере необходимости.
Если обнаруживают 422 совпадение, и обнаруживают 426, что количество совпадений меньше порогового значения совпадений, то контакты, имеющие свернутые формы, совпадающие со свернутыми формами одной или более строк-кандидатов, могут быть возвращены 430 пользователю в качестве потенциальных совпадений и/или использованы в качестве вводов для команды. Если обнаруживают 432, что пользователь выбирает один из контактов, сообщенных на этапе 430, то способ 400 может включать в себя обновление 434 метаданных для одной или более строк-кандидатов, имеющих свернутую форму, совпадающую с выбранным контактом, для включения выбранного контакта в поле <список_коррекций>, или количество коррекций для контакта может быть увеличено, если выбранный контакт уже присутствует в поле <список_коррекций> для этой одной или более строк-кандидатов.
Если не обнаруживают 432, что пользователь выбрал один из контактов, представленных на этапе 430, то могут быть обновлены 436 метаданные неудач. Например, для каждой строки-кандидата, имеющей совпадающие свернутые формы, идентифицированные на этапе 422, значение поля <неудачи> может быть увеличено.
Если обнаруживают 426, что количество контактов, имеющих свернутые формы, совпадающие со свернутыми формами строк-кандидатов, превышает пороговое значение совпадения, то совпадающие контакты могут быть отфильтрованы 428. Фильтрация 428 может быть выполнен в соответствии со способом 600 на Фиг. 6 или в соответствии с некоторыми другими критериями фильтрации. О совпадающих контактах, оставшихся после фильтрации 428, может быть сообщено на этапе 430, и обработка может продолжаться, как описано выше.
Со ссылкой на Фиг. 6 проиллюстрированный способ 600 может быть использован для выбора поднабора контактов, имеющих свернутые формы, совпадающие со свернутыми формами строк-кандидатов.
Способ 600 может дополнительно включать в себя фильтрацию 602 совпадающих контактов в соответствии с текстовым сходством со строками-кандидатами, имеющими свернутые формы, совпадающие со свернутыми формами совпадающих контактов. Может быть использована любая метрика текстового сходства, такая как расстояние редактирования между строками или другой подход. Эта фильтрация 602 может включать в себя удаление фильтрации Способ 600 может включать в себя фильтрацию 604 контактов в соответствии с местоположением. Например, метаданные для контакта могут записывать местоположение пользователя, когда происходит связь (звонок, текстовое сообщение, электронное письмо) с этим контактом, например, область, в пределах которой происходит X процентов, например, 90%, случаев связи. В связи с этим фильтрация 604 может включать в себя удаление совпадающих контактов, которые не имеют областей, включающих в себя текущее местоположение транспортного средства 102 или мобильного устройства 114 при выполнении способа 600.
Способ 600 может включать в себя фильтрацию 606 совпадающих контактов в соответствии со временем. Например, метаданные для контакта могут записывать временное окно, в течение которого происходит связь (звонок, текстовое сообщение, электронное письмо) с этим контактом, например, время суток, в течение которого происходит X процентов, например, 90%, случаев связи. Метаданные могут хранить отдельные временные окна, отражающие, когда происходили случаи связи в разные дни или типы дней (конкретный день недели, будний день, выходной день). В связи с этим фильтрация 606 может включать в себя удаление совпадающих контактов, которые не имеют временных окон, включающих в себя текущее время, в которое выполняется способ 600. Когда поддерживаются окна конкретных дней, фильтрация 606 может включать в себя удаление совпадений, которые не имеют текущего времени во временном окне, соответствующем текущему дню недели или типу дня (выходной день или будний день).
Фиг. 6 раскрывает несколько этапов 602-606 фильтрации, которые могут быть объединены различными способами. Например, вводом для одного этапа фильтрации могут быть контакты, оставшиеся после предыдущего этапа фильтрации. Альтернативно, каждый этап фильтрации может приводить к показателю, присваиваемому каждому контакту. Например, 1, если критерии фильтра удовлетворены, или 0, если критерии фильтра не удовлетворены контактом. Альтернативно, показатель для этапов 604, 606 может представлять собой значение, которое увеличивается с близостью текущего местоположения к области для контакта или с близостью текущего времени к соответствующему временному окну, например, временному окну конкретного дня для контакта. Для этапа 602 показатель может представлять собой метрику текстового сходства.
Для каждого контакта показатели в соответствии с этапами 602-606 фильтрации могут быть просуммированы, взвешены и просуммированы или иным образом объединены для определения конечного показателя для каждого контакта. Контакты, имеющие первые N (например, 2 3 или 4) конечных показателей, или контакты, имеющие конечные показатели, превышающие пороговое значение, могут быть выбраны в качестве остающихся контактов после процесса фильтрации.
В некоторых вариантах выполнения поднабор контактов выбирается в соответствии с фильтрацией по текстовому сходству на этапе 602. Затем этот поднабор может быть обработан в соответствии с этапами 604, 606, которые могут включать в себя присвоение показателей и выбор конечного показателя, который представляет собой сочетание показателей с этапов 604, 606, способом, описанным выше.
В вышеприведенном описании сделана ссылка на сопровождающие чертежи, которые образуют его часть, и на которых показаны путем иллюстрации определенные реализации, в которых изобретение может быть осуществлено на практике. Следует понимать, что другие реализации могут быть использованы, и структурные изменения могут быть выполнены без отклонения от объема охраны настоящего изобретения. Ссылки в описании на «один вариант выполнения», «вариант выполнения», «примерный вариант выполнения» и т.д. указывают на то, что описанный вариант выполнения может включать в себя конкретный признак, структуру или характеристику, но каждый вариант выполнения не обязательно может включать в себя конкретный признак, структуру или характеристику. Более того, такие фразы не обязательно ссылаются на один и тот же вариант выполнения. Дополнительно, когда конкретный признак, структура или характеристика описана в связи с вариантом выполнения, утверждается, что он находится в пределах знания специалиста в области техники для осуществления такого признака, структуры или характеристики в связи с другими вариантами выполнения, явно ли или нет описанными.
Реализации систем, устройств и способов, раскрытые в данном документе, могут содержать или использовать компьютер специального или общего назначения, включающий в себя компьютерное аппаратное обеспечение, такое как, например, один или более процессоров и системная память, как обсуждалось в данном документе. Реализации в пределах объема охраны настоящего изобретения также могут включать в себя физические и другие считываемые компьютером носители для переноса или хранения выполняемых компьютером инструкций и/или структур данных. Такие считываемые компьютером носители могут быть любыми доступными носителями, к которым может быть осуществлен доступ посредством компьютерной системы общего или специального назначения. Считываемые компьютером носители, которые хранят выполняемые компьютером инструкции, представляют собой компьютерные носители данных (устройства). Считываемые компьютером носители, которые переносят выполняемые компьютером инструкции, представляют собой среды передачи. Таким образом, в качестве примера, а не ограничения, реализации изобретения могут содержать по меньшей мере два совершенно разных типа считываемых компьютером носителей: компьютерные носители данных (устройства) и среды передачи.
Компьютерные носители данных (устройства) включают в себя RAM, ROM, EEPROM, CD-ROM, твердотельные накопители («SSD») (например, на основе RAM), флэш-память, память с изменением фазы («PCM»), другие типы памяти, другие запоминающие устройства на оптических дисках, запоминающие устройства на магнитных дисках или другие магнитные запоминающие устройства или любой другой носитель, который может быть использован для хранения желаемых средств программного кода в форме выполняемых компьютером инструкций или структур данных, и к которым может быть осуществлен доступ посредством компьютера общего или специального назначения.
Реализация устройств, систем и способов, раскрытых в данном документе, может осуществлять связь по компьютерной сети. «Сеть» определяется как один или более каналов передачи данных, которые позволяют перемещение электронных данных между компьютерными системами и/или модулями и/или другими электронными устройствами. Когда информация передается или обеспечивается по сети или другому соединению связи (проводному, беспроводному или сочетанию проводного и беспроводного) к компьютеру, компьютер соответственно рассматривает соединение как среду передачи. Среды передачи могут включать в себя сеть и/или каналы передачи данных, которые могут быть использованы для переноса желаемых средств программного кода в форме выполняемых компьютером инструкций или структур данных, и к которым может быть осуществлен доступ посредством компьютера общего или специального назначения. Сочетания вышеупомянутого должны быть также включены в объем считываемых компьютером носителей.
Выполняемые компьютером инструкции содержат, например, инструкции и данные, которые при выполнении в процессоре, побуждают компьютер общего назначения, компьютер специального назначения или устройство обработки специального назначения выполнять некоторую функцию или группу функций. Выполняемые компьютером инструкции могут представлять собой, например, двоичный код, инструкции промежуточного формата, такие как язык ассемблера, или даже исходный код. Хотя объект изобретения описан на языке, характерном для структурных признаков и/или методологических действий, следует понимать, что объект изобретения, определяемый в прилагаемой формуле изобретения, не обязательно ограничен описанными признаками или действиями, описанными выше. Точнее, описанные признаки и действия раскрыты как примерные формы реализации формулы изобретения.
Специалисту в области техники будет понятно, что изобретение может быть осуществлено на практике в сетевых вычислительных средах со многими типами конфигураций компьютерной системы, включая, компьютер в приборной панели транспортного средства, персональные компьютеры, настольные компьютеры, ноутбуки, процессоры обработки сообщений, портативные устройства, многопроцессорные системы, бытовую электронику на базе микропроцессоров или программируемую бытовую электронику, сетевые персональные компьютеры, мини-компьютеры, мейнфреймы, мобильные телефоны, карманные персональные компьютеры, планшетные компьютеры, пейджеры, маршрутизаторы, коммутаторы, различные запоминающие устройства и т.п. Изобретение также может быть осуществлено на практике в распределенных системных средах, где локальная и удаленная компьютерные системы, которые связаны (либо посредством проводных каналов передачи данных, беспроводных каналов передачи данных, либо посредством сочетания проводных и беспроводных каналов передачи данных) через сеть, обе выполняют задачи. В распределенной системной среде программные модули могут быть расположены как в локальных, так и в удаленных запоминающих устройствах памяти.
Дополнительно, при необходимости, функции, описанные в данном документе, могут быть выполнены в одном или более из: аппаратного обеспечения, программного обеспечения, микропрограммного обеспечения, цифровых компонентов или аналоговых компонентов. Например, одна или более интегральных схем специального назначения (ASIC) могут быть запрограммированы на выполнение одной или более систем и процедур, описанных в данном документе. Некоторые выражения используются во всем описании и формуле изобретения для ссылки на конкретные компоненты системы. Как будет понятно специалисту в области техники, компоненты могут упоминаться под различными названиями. Этот документ не предназначен устанавливать различия между компонентами, которые отличаются по названию, а не по функции.
Следует отметить, что варианты выполнения датчиков, обсуждаемые выше, могут содержать компьютерное аппаратное обеспечение, программное обеспечение, микропрограммное обеспечение или любое их сочетание для выполнения по меньшей мере части их функций. Например, датчик может включать в себя компьютерный код, выполненный с возможностью выполнения в одном или более процессорах, и может включать в себя аппаратную логику/электрическую схему, управляемую компьютерным кодом. Эти примерные устройства обеспечены в данном документе в целях иллюстрации и не предназначены для ограничения. Варианты выполнения настоящего изобретения могут быть осуществлены в дополнительных типах устройств, как должно быть известно специалисту в области(ях) техники. По меньшей мере некоторые варианты выполнения изобретения направлены на компьютерные программные продукты, содержащие такую логику (например, в виде программного обеспечения), хранящуюся на любом используемом компьютером носителе. Такое программное обеспечение при выполнении в одном или более устройствах обработки данных побуждает устройство работать, как описано в данном документе.
Компьютерный программный код для выполнения операций настоящего изобретения может быть написан в любом сочетании одного или более языков программирования, включая объектно-ориентированные языки программирования, такие как Java, Smalltalk, C++ или т.п., и традиционные языки процедурного программирования, такие как язык программирования «C» или подобные языки программирования. Программный код может полностью выполняться на компьютерной системе в виде автономного пакета программ, на автономном аппаратном блоке, частично на удаленном компьютере, разнесенном на некоторое расстояние от компьютера пользователя, или полностью на удаленном компьютере или сервере. В последнем варианте удаленный компьютер может быть соединен с компьютером пользователя с помощью любого типа сети, включая локальную вычислительную сеть (LAN) или глобальную вычислительную сеть (WAN), или соединение может быть выполнено с внешним компьютером (например, через сеть Интернет при помощи поставщика услуг в сети Интернет).
Настоящее изобретение описано ниже со ссылкой на иллюстрации последовательности операций и/или блок-схемы способов, устройств (систем) и компьютерных программных продуктов в соответствии с вариантами выполнения изобретения. Будет понятно, что каждый блок на иллюстрациях последовательности операций и/или блок-схемах, а также комбинации блоков на иллюстрациях последовательности операций и/или блок-схемах могут быть реализованы посредством инструкций компьютерной программы или кода. Эти инструкции компьютерной программы могут быть обеспечены для процессора компьютера общего назначения, компьютера специального назначения или другого программируемого устройства обработки данных для создания машины, таким образом, что инструкции, которые выполняются с помощью процессора компьютера или другого программируемого устройства обработки данных, создают средство реализации функций/действий, указанных в блоке или блоках последовательностей операций и/или блок-схем.
Эти инструкции компьютерной программы также могут храниться на энергонезависимом машиночитаемом носителе, который может управлять компьютером или другим программируемым устройством обработки данных, чтобы они функционировали определенным образом, чтобы инструкции, хранящиеся в машиночитаемом носителе, создавали изделие, включающее в себя средство инструкции, которое реализует функцию/действие, указанное в блоке или блоках последовательностей операций и/или блок-схем.
Инструкции компьютерной программы могут также быть загружены в компьютер или другое программируемое устройство обработки данных, чтобы побуждать последовательность функциональных этапов, выполняемых на компьютере или другом программируемом устройстве, создавать реализуемый на компьютере процесс, чтобы инструкции, которые выполняются на компьютере или другом программируемом устройстве, обеспечивали процессы для реализации функций/действий, указанных в блоке или блоках последовательностей операций и/или блок-схем.
Хотя различные варианты выполнения настоящего изобретения описаны выше, следует понимать, что они представлены исключительно путем примера, а не ограничения. Специалисту в области техники будет очевидно, что различные изменения в форме и деталях могут быть выполнены без отклонения от сущности и объема охраны изобретения. Таким образом, широта трактовки и объем охраны настоящего изобретения не должны ограничиваться каким-либо из вышеописанных примерных вариантов выполнения, но должны быть определены только в соответствии со следующей далее формулой изобретения и ее эквивалентами. Вышеприведенное описание представлено в целях иллюстрации и описания. Оно не предназначено быть исчерпывающим или ограничивающим изобретение раскрытыми точными формами. Многие модификации и изменения возможны в свете вышеприведенного учения. Дополнительно, что любая или все из вышеупомянутых альтернативных реализаций могут использоваться в любом желаемом сочетании для образования дополнительных гибридных реализаций изобретения.