N-грамма: различия между версиями
w>Nashev (тем не менее, это фактический итог проекта, его надо указать для полноты картины.) |
In.wiki (комментарии | вклад) |
||
(не показано 38 промежуточных версий 22 участников) | |||
Строка 1: | Строка 1: | ||
− | + | '''N-Грамма''' — последовательность, состоящая из n элементов, которые могут быть звуками, слогами, словами или буквами, в зависимости от контекста. Чаще всего N-грамма - это последовательность слов, устойчивые сочетания которых называются словосочетаниями. | |
− | '''N- | + | |
+ | Последовательность из двух элементов называется биграммой, а последовательность из трёх элементов называется триграммой. Последовательность, состоящая из четырёх или более элементов, называется N-граммой, где N - количество элементов. | ||
== Использование N-грамм == | == Использование N-грамм == | ||
=== Общее использование N-грамм === | === Общее использование N-грамм === | ||
− | N-граммы в целом находят | + | N-граммы в целом находят своё применение в широкой области наук. Они могут применяться, например, в области теоретической [[математика|математики]], [[биология|биологии]], [[картография|картографии]], а также в [[музыка|музыке]]. Наиболее часто использование N-грамм включает следующие области: |
* извлечение [[данные|данных]] для [[кластеризация|кластеризации]] серии спутниковых снимков Земли из космоса, чтобы затем решить, какие конкретные части Земли на изображении, | * извлечение [[данные|данных]] для [[кластеризация|кластеризации]] серии спутниковых снимков Земли из космоса, чтобы затем решить, какие конкретные части Земли на изображении, | ||
* поиск [[Генетический код|генетических последовательностей]], | * поиск [[Генетический код|генетических последовательностей]], | ||
Строка 14: | Строка 15: | ||
=== Использование N-грамм для нужд обработки естественного языка === | === Использование N-грамм для нужд обработки естественного языка === | ||
− | В области обработки естественного языка | + | В области обработки естественного языка N-граммы используется в основном для предугадывания на основе [[Теория вероятностей|вероятностных моделей]]. N-граммная модель рассчитывает [[вероятность]] последнего слова N-граммы, если известны все предыдущие. При использовании этого подхода для моделирования языка предполагается, что появление каждого слова зависит только от предыдущих слов<ref>{{книга |
+ | | автор = Jurafsky, D. and Martin, J.H. | ||
+ | | заглавие = Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition | ||
+ | | издательство = Pearson Prentice Hall | ||
+ | | год = 2009 | ||
+ | | allpages = 988 | ||
+ | | isbn = 9780131873216 | ||
+ | | ref = Jurafsky, D. and Martin, J.H. | ||
+ | }}</ref>. | ||
− | + | Другим применением N-грамм является выявление [[плагиат]]а. Если разделить текст на несколько небольших фрагментов, представленных N-граммами, их легко сравнить друг с другом и таким образом получить степень сходства анализируемых документов<ref>Proceedings of the ITAT 2008, Information Technologies — Applications and Theory, Hrebienok, Slovakia, pp. 23-26, September 2008. ISBN 978-80-969184-8-5</ref>. N-граммы часто успешно используются для категоризации текста и языка. Кроме того, их можно использовать для создания функций, которые позволяют получать знания из текстовых данных. Используя N-граммы, можно эффективно найти кандидатов, чтобы заменить слова с ошибками правописания. | |
=== Пример биграммной модели === | === Пример биграммной модели === | ||
Целью построения N-граммных моделей является определение вероятности употребления заданной фразы. Эту вероятность можно задать формально как вероятность возникновения последовательности слов в неком [[Корпусная лингвистика|корпусе]] (наборе текстов). К примеру, вероятность фразы «счастье есть удовольствие без раскаяния» можно вычислить как произведение вероятностей каждого из слов этой фразы: | Целью построения N-граммных моделей является определение вероятности употребления заданной фразы. Эту вероятность можно задать формально как вероятность возникновения последовательности слов в неком [[Корпусная лингвистика|корпусе]] (наборе текстов). К примеру, вероятность фразы «счастье есть удовольствие без раскаяния» можно вычислить как произведение вероятностей каждого из слов этой фразы: | ||
− | <pre>P = P(счастье) * P(есть|счастье) * P(удовольствие|счастье есть) * P(без|счастье есть удовольствие) * P(раскаяния|счастье есть удовольствие без)</pre> | + | <small><pre>P = P(счастье) * P(есть|счастье) * P(удовольствие|счастье есть) * P(без|счастье есть удовольствие) * P(раскаяния|счастье есть удовольствие без)</pre></small> |
− | + | Чтобы определить P(счастье), нужно посчитать, сколько раз это слово встретилось в тексте, и поделить это значение на общее число слов. Рассчитать вероятность P(раскаяния|счастье есть удовольствие без) сложнее. Чтобы упростить эту задачу, примем, что вероятность слова в тексте зависит только от предыдущего слова. Тогда наша формула для расчета фразы примет следующий вид: | |
− | <pre>P = P(счастье) * P(есть|счастье) * P(удовольствие|есть) * P(без|удовольствие) * P(раскаяния|без)</pre> | + | <small><pre>P = P(счастье) * P(есть|счастье) * P(удовольствие|есть) * P(без|удовольствие) * P(раскаяния|без)</pre></small> |
− | + | Рассчитать условную вероятность P(есть|счастье) несложно. Для этого считаем количество пар 'счастье есть', и делим на количество в тексте слова 'счастье'. | |
В результате, если мы посчитаем все пары слов в некотором тексте, мы сможем вычислить вероятность произвольной фразы. Этот набор рассчитанных вероятностей и будет биграммной моделью. | В результате, если мы посчитаем все пары слов в некотором тексте, мы сможем вычислить вероятность произвольной фразы. Этот набор рассчитанных вероятностей и будет биграммной моделью. | ||
== Научно-исследовательские проекты Google == | == Научно-исследовательские проекты Google == | ||
− | Исследовательские центры [[Google]] использовали N-граммные модели для широкого круга исследований и разработок. К ним относятся такие проекты, как [[Статистический машинный перевод|статистический перевод]] с одного языка на другой, [[распознавание речи]], исправление орфографических ошибок, [[извлечение информации]] и многое другое. Для целей этих проектов были использованы текстовые корпусы, содержащие несколько триллионов слов. | + | Исследовательские центры [[Google (компания)|Google]] использовали N-граммные модели для широкого круга исследований и разработок. К ним относятся такие проекты, как [[Статистический машинный перевод|статистический перевод]] с одного языка на другой, [[распознавание речи]], исправление орфографических ошибок, [[извлечение информации]] и многое другое. Для целей этих проектов были использованы текстовые корпусы, содержащие несколько триллионов слов. |
− | Google решила создать свой | + | Google решила создать свой учебный корпус. Проект называется Google teracorpus и он содержит 1 024 908 267 229 слов, собранных с общедоступных веб-сайтов<ref>FRANZ, Alex, BRANTS, Thorsten. [https://googleresearch.blogspot.com/2006/08/all-our-n-gram-are-belong-to-you.html Official Google Research Blog: All Our N-gram are Belong to You] {{Wayback|url=http://googleresearch.blogspot.com/2006/08/all-our-n-gram-are-belong-to-you.html |date=20061017225954 }}. Thursday, August 03, 2006 at 8/03/2006 11:26:00 AM. Созданная база N-грамм продаётся в виде 5 DVD.</ref>. |
== Методы для извлечения N-грамм == | == Методы для извлечения N-грамм == | ||
Строка 43: | Строка 52: | ||
* [[Суффиксное дерево]] | * [[Суффиксное дерево]] | ||
* [[Инвертированный индекс]] | * [[Инвертированный индекс]] | ||
+ | |||
+ | == Синтаксические N-граммы == | ||
+ | Синтаксические N-граммы представляют собой последовательности элементов, определяемые на основе структуры синтаксических зависимостей или составляющих, а не линейной последовательности слов в тексте<ref name="sng">Grigori Sidorov, Francisco Velasquez, Efstathios Stamatatos, Alexander Gelbukh, and Liliana Chanona-Hernández. Syntactic Dependency-based N-grams as Classification Features. LNAI 7630, pp. 1-11, 2012.</ref><ref>Grigori Sidorov. Syntactic Dependency Based N-grams in Rule Based Automatic English as Second Language Grammar Correction. International Journal of Computational Linguistics and Applications, Vol. 4, No. 2, pp. 169—188, 2013.</ref>. | ||
+ | |||
+ | Синтаксические N-граммы представляют собой инструмент, позволяющий анализировать и описывать синтаксическую структуру языка. В отличие от линейных N-грамм, они могут быть использованы в тех же областях, что и последние, включая применение в качестве элементов векторной модели. | ||
+ | |||
+ | == Частотность n-грамм в текстах на русском языке == | ||
+ | Частотность n-грамм в текстах на русском языке можно найти напр. здесь: https://www.wolosz.hu/russian_n-grams.html<ref>{{Cite web|url=https://www.wolosz.hu/russian_n-grams.html|title=Частотность состоящих из слов n-грамм в текстах на русском языке|lang=ru|author=R. Wołosz|date=2024|url-status=live}}</ref> | ||
== См. также == | == См. также == | ||
Строка 49: | Строка 66: | ||
== Примечания == | == Примечания == | ||
{{примечания}} | {{примечания}} | ||
+ | |||
+ | {{Обработка естественного языка}} | ||
[[Категория:Информатика]] | [[Категория:Информатика]] | ||
+ | [[Категория:Обработка естественного языка]] | ||
+ | [[Категория:Языковое моделирование]] |
Текущая версия от 21:25, 20 августа 2025
N-Грамма — последовательность, состоящая из n элементов, которые могут быть звуками, слогами, словами или буквами, в зависимости от контекста. Чаще всего N-грамма - это последовательность слов, устойчивые сочетания которых называются словосочетаниями.
Последовательность из двух элементов называется биграммой, а последовательность из трёх элементов называется триграммой. Последовательность, состоящая из четырёх или более элементов, называется N-граммой, где N - количество элементов.
Использование N-грамм[править | править код]
Общее использование N-грамм[править | править код]
N-граммы в целом находят своё применение в широкой области наук. Они могут применяться, например, в области теоретической математики, биологии, картографии, а также в музыке. Наиболее часто использование N-грамм включает следующие области:
- извлечение данных для кластеризации серии спутниковых снимков Земли из космоса, чтобы затем решить, какие конкретные части Земли на изображении,
- поиск генетических последовательностей,
- в области генетики используются для определения того, с каких конкретных видов животных собраны образцы ДНК,
- в компьютерном сжатии,
- для индексирования данных в поисковых системах; с использованием N-грамм, как правило, индексированы данные, связанные со звуком.
Также N-граммы широко применяются в обработке естественного языка.
Использование N-грамм для нужд обработки естественного языка[править | править код]
В области обработки естественного языка N-граммы используется в основном для предугадывания на основе вероятностных моделей. N-граммная модель рассчитывает вероятность последнего слова N-граммы, если известны все предыдущие. При использовании этого подхода для моделирования языка предполагается, что появление каждого слова зависит только от предыдущих слов[1].
Другим применением N-грамм является выявление плагиата. Если разделить текст на несколько небольших фрагментов, представленных N-граммами, их легко сравнить друг с другом и таким образом получить степень сходства анализируемых документов[2]. N-граммы часто успешно используются для категоризации текста и языка. Кроме того, их можно использовать для создания функций, которые позволяют получать знания из текстовых данных. Используя N-граммы, можно эффективно найти кандидатов, чтобы заменить слова с ошибками правописания.
Пример биграммной модели[править | править код]
Целью построения N-граммных моделей является определение вероятности употребления заданной фразы. Эту вероятность можно задать формально как вероятность возникновения последовательности слов в неком корпусе (наборе текстов). К примеру, вероятность фразы «счастье есть удовольствие без раскаяния» можно вычислить как произведение вероятностей каждого из слов этой фразы:
P = P(счастье) * P(есть|счастье) * P(удовольствие|счастье есть) * P(без|счастье есть удовольствие) * P(раскаяния|счастье есть удовольствие без)
Чтобы определить P(счастье), нужно посчитать, сколько раз это слово встретилось в тексте, и поделить это значение на общее число слов. Рассчитать вероятность P(раскаяния|счастье есть удовольствие без) сложнее. Чтобы упростить эту задачу, примем, что вероятность слова в тексте зависит только от предыдущего слова. Тогда наша формула для расчета фразы примет следующий вид:
P = P(счастье) * P(есть|счастье) * P(удовольствие|есть) * P(без|удовольствие) * P(раскаяния|без)
Рассчитать условную вероятность P(есть|счастье) несложно. Для этого считаем количество пар 'счастье есть', и делим на количество в тексте слова 'счастье'.
В результате, если мы посчитаем все пары слов в некотором тексте, мы сможем вычислить вероятность произвольной фразы. Этот набор рассчитанных вероятностей и будет биграммной моделью.
Научно-исследовательские проекты Google[править | править код]
Исследовательские центры Google использовали N-граммные модели для широкого круга исследований и разработок. К ним относятся такие проекты, как статистический перевод с одного языка на другой, распознавание речи, исправление орфографических ошибок, извлечение информации и многое другое. Для целей этих проектов были использованы текстовые корпусы, содержащие несколько триллионов слов.
Google решила создать свой учебный корпус. Проект называется Google teracorpus и он содержит 1 024 908 267 229 слов, собранных с общедоступных веб-сайтов[3].
Методы для извлечения N-грамм[править | править код]
В связи с частым использованием N-грамм для решения различных задач необходим надежный и быстрый алгоритм для извлечения их из текста. Подходящий инструмент для извлечения N-грамм должен быть в состоянии работать с неограниченным размером текста, работать быстро и эффективно использовать имеющиеся ресурсы. Есть несколько методов извлечения N-грамм из текста. Эти методы основаны на разных принципах:
- Алгоритм Nagao 94 для текстов на японском[4]
- Алгоритм Лемпеля — Зива — Велча
- Суффиксный массив
- Суффиксное дерево
- Инвертированный индекс
Синтаксические N-граммы[править | править код]
Синтаксические N-граммы представляют собой последовательности элементов, определяемые на основе структуры синтаксических зависимостей или составляющих, а не линейной последовательности слов в тексте[5][6].
Синтаксические N-граммы представляют собой инструмент, позволяющий анализировать и описывать синтаксическую структуру языка. В отличие от линейных N-грамм, они могут быть использованы в тех же областях, что и последние, включая применение в качестве элементов векторной модели.
Частотность n-грамм в текстах на русском языке[править | править код]
Частотность n-грамм в текстах на русском языке можно найти напр. здесь: https://www.wolosz.hu/russian_n-grams.html[7]
См. также[править | править код]
Примечания[править | править код]
- ↑ Jurafsky, D. and Martin, J.H. Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition. — Pearson Prentice Hall, 2009. — 988 p. — ISBN 9780131873216.
- ↑ Proceedings of the ITAT 2008, Information Technologies — Applications and Theory, Hrebienok, Slovakia, pp. 23-26, September 2008. ISBN 978-80-969184-8-5
- ↑ FRANZ, Alex, BRANTS, Thorsten. Official Google Research Blog: All Our N-gram are Belong to You Архивная копия от 17 октября 2006 на Wayback Machine. Thursday, August 03, 2006 at 8/03/2006 11:26:00 AM. Созданная база N-грамм продаётся в виде 5 DVD.
- ↑ M. Nagao and S. Mori. A New Method of N-gram Statistics for Large Number of n and Automatic Extraction of Words and Phrases from Large Text Data of Japanese. In Proceedings of the 15th International Conference on Computational Linguistics (COLING 1994), Kyoto, Japan, 1994.
- ↑ Grigori Sidorov, Francisco Velasquez, Efstathios Stamatatos, Alexander Gelbukh, and Liliana Chanona-Hernández. Syntactic Dependency-based N-grams as Classification Features. LNAI 7630, pp. 1-11, 2012.
- ↑ Grigori Sidorov. Syntactic Dependency Based N-grams in Rule Based Automatic English as Second Language Grammar Correction. International Journal of Computational Linguistics and Applications, Vol. 4, No. 2, pp. 169—188, 2013.
- ↑ R. Wołosz. Частотность состоящих из слов n-грамм в текстах на русском языке (2024).
Ошибка Lua в Модуль:Navbox на строке 353: attempt to index local 'listText' (a nil value).