Составление выжимки из текста узлом Резюме
Данный узел или опция доступны, только если они включены в лицензии PolyAnalyst Server. |
Алгоритм, используемый узлом Резюме, по сравнению в другими, достаточно прост. Сначала документ (одно значение исходной текстовой колонки) разбивается на предложения. Затем каждому предложению приписывается абстрактная метрика "важности". Затем из исходного документа выбираются определенные предложения в соответствии с метрикой важности. Наконец, эти выбранные предложения объединяются в выходном документе в том порядке, в котором встречаются в исходном тексте.
Частота ключевых слов в других документах (других строках исходной таблицы) не влияют на то, каким образом для данного документа отбираются предложения. Алгоритм рассматривает каждый документ по отдельности. На создание выжимки из документа влияет только содержимое самого документа.
Алгоритм не создает "новое" содержание. Помните, что он отличается от алгоритмов обобщения более продвинутого уровня, которые переформулируют исходный текст. В выходных данных представлены только существующие данные в том же виде, в каком они присутствовали в исходной колонке (за исключением отдельных предложений).
Алгоритм обобщения
В настоящее время построение синтаксической и семантической структуры предложения не реализовано с достаточной точностью. Выполнить качественное сокращение предложения и генерировать новые предложения непосредственно на основе возвращенного значения текста невозможно. Все алгоритмы обобщения просто выбирают наиболее релевантное предложение данного текста и помещают их в выходной отчет без значимых изменений. Наиболее серьезной проблемой при таком подходе является отсутствие связности в получившейся выжимке. Эта проблема еще не решена; чтобы улучшить связность эвристически, нам понадобится вручную созданные стандарты для отработки или некоторое число собранных вручную словарей. Ни того, ни другого у нас нет, поэтому наш алгоритм обобщения основан исключительно на релевантности предложений в тексте.
Границы предложений
Алгоритм использует парсер, который делит текст на предложения. Исправить это деление можно путем удаления символов в начале и в конце предложения. В последней реализации отбрасываются целые строки, состоящие только из пунктуационных знаков и неизвестных символов. Эта операция необходима потому, что парсер добавляет к предложениям строки, содержащие символы для аннотации текста (например, таблицы, выполненные псевдографикой).
Свойства предложений
После исправления границ предложений система рассчитывает некоторые свойства для каждого предложения, учитывая границы (измеряемые символами и токенами), назначенные алгоритмом. Свойства предложений могут быть двух типов: вычисленные вектором токенов предложения и вычисленные по структуре предложения (его положению в тексте).
Бонус для релевантных слов
Данное значение вычисляется по TF-IDF слов, релевантных для статистических словарей, выбранных пользователем, или релевантных для самой таблицы, если словарь не выбран. Слова с высоким уровнем релевантности, которые появляются рядом друг с другом, получают более высокий уровень значимости.
Это отдельная схема, которая учитывает бонус для неизвестных (отсутствующих в статистических и морфологических словарях) слов для имен людей и названий мест. Бонус вычисляется по числу таких слов в данном предложении. Данная схема используется по двум причинам. Во-первых, если мы используем TF-IDF для имен, то мы будем приписывать более частым именам меньшую важность по сравнению с более редкими именами; это нежелательно. Во-вторых, слова, которые так или иначе зависят от контекста (например, аббревиатуры, которые используются только по теме данного текста) будут иметь крайне высокую релевантность, и присутствие таких слов в предложении будет ключевым фактором при решении того, включать ли данное предложение в статистику.
Полученный бонус вычисляется как общее взвешенное значение двух описанных метрик.
Число пунктуационных знаков
Данная мера рассчитывается как отношение числа пунктуационных знаков к общему числу токенов в предложении. Это свойство помогает исключить "сорные" предложения (например, списки адресов электронной почты, оглавление, графики). Обычные пунктуационные знаки в соответствии с используемой эвристикой не исключаются, например, многоточие (используемое как знак пропуска) считается одним знаком; пунктуационный знак в конце предложения не учитывается, и т.д.
Штрафной коэффициент для числа токенов
Предполагается, что в хорошей выжимке из текста длина предложений имеет гауссово распределение. К сожалению, существующие выходные данные были созданы без учета этого свойства. Поэтому при запуске алгоритма с разными распределениями штрафных коэффициентов чем больше разница с равномерным распределением, тем выше отклонение от эталонных выходных данных. В итоге мы остановились на гауссовом распределении со средним значением, подогнанным вручную.
Другие свойства
Предложение получает штрафной коэффициент в следующих случаях:
-
оно не содержит существительных и глаголов;
-
оно содержит скобки;
-
оно начинается с мета-теги электронного сообщения.
Бонус для числа индекса предложения в тексте
Считается, что наиболее важные вещи в тексте написаны либо в начале, либо в конце текста, следовательно предложение получает бонусный коэффициент из-за положения ближе к началу или концу текста. В целом, использование этого свойства позволяет улучшить качество текстовых данных.
Межстрочный интервал
Сначала рассчитывается максимальная ширина (расстояние между двумя переводами строк). Мы предполагаем, что для автора текста было бы неудобно писать строки длиннее, чем позволяет ширина документа. Если строки слишком длинные, автор, вероятно, переходит на другую строку только в конце абзаца. Мы делим длинные строки на несколько строк стандартной длины. Затем вычисляем среднюю длину строк для каждого предложения. Предложение, отформатированное как таблица или список, как правило, имеет меньшую среднюю длину и состоит из многих строк. Такие предложения получают более низкую значимость.
Выбор предложения
После расчета всех свойств предложения классифицируются с помощью двух функций. Первая функция определяет, является ли предложение "обычной" частью текста, не может ли оно быть списком, заголовком, таблицей и т.д. Вторая функция рассчитывает релевантность предложений с учетом всех штрафных и бонусных коэффициентов. В списке предложений сначала идут обычные предложения, затем те предложения, которые могут быть "сорными". Внутри каждого класса предложения сортируются по релевантности в нисходящем порядке.
Критерии, позволяющие выявить "сор", не всегда точны; иногда "сорными" считаются те предложения, которые не типичны для газетной статьи или книги, но приемлемы, например, в языке электронной переписки. Такие предложения могут быть включены в итоговую выжимку, если обычных предложений будет мало.
Из ранжированного по релевантности списка предложений мы берем некоторые предложения (их число определяется пользователем), удаляя при этом дублирующиеся предложения. Если одно предложение содержит другое, то в отчет включаются оба, поскольку определить, которое из них важнее, невозможно.
Если пользователь выбирает опцию Показывать только информативные предложения, алгоритм может включить в отчет меньше предложений, чем было запрошено, если какие-то предложения будут считаться "сорными". Практика показывает, что лучше не включать в итоговый отчет те предложения, которые не считаются "сорными", если установлен нестрогий критерий, и, наоборот, считаются таковыми, если установить более строгий критерий.
Результаты
Мы взяли выжимки текстов, созданные двумя известными онлайн-инструментами в качестве контрольных образцов. Для каждого текста мы взяли пересечение этих выжимок (т.е. предложения, которые встречаются в обоих отчетах из пары). Затем мы сравнили отчет, выполненный нашим алгоритмом, с пересечением и с предложениями, которые встречаются только в одном отчете из пары, используя индекс Жаккара (мощность пересечения, разделенная на мощность объединения). Затем полученные числа складывались с коэффициентами 1 для пересечения и 0,5 для предложений, которые встречаются только в одном отчете из пары.
Для национального корпуса русского языка мы получили значение 33%. Если сравнить оба отчета с помощью индекса Жаккара, получим 41% для контрольных отчетов, и 27% и 30% при сравнении нашего отчета с каждым из контрольных отчетов.
Если говорить о качестве результата, наш алгоритм (создание выжимки текста из исходных предложений путем сокращения числа предложений, но не их изменения) можно сравнить с существующими аналогами. Чтобы расширить возможности алгоритма, необходимы высокоточные инструменты синтаксического и семантического анализа, что, к сожалению, не может быть реализовано в ближайшем будущем.
Данный алгоритм использует словарь статистики, словари имен людей, геоадминистративных объектов, списки стоп-слов. Эти словари стандартны для PolyAnalyst; пользователи могут выбирать словари самостоятельно. Алгоритм также использует список мета-слов электронных сообщений, который был составлен специально для данного алгоритма. В настоящее время имеется список мета-слов электронной переписки на английском языке, который используется для текстов на любом языке, и список на русском языке, который, соответственно, используется при работе с русскими текстами. Любой упомянутый выше словарь может отсутствовать, что ухудшает качество выходных данных, но не приводит к остановке работы алгоритма.