Я хочу реализовать некоторые приложения с n-граммами (желательно на PHP).N-граммы: Объяснение + 2 приложения
Какой тип n-граммов более подходит для большинства целей? Уровень слова или уровень n-грамма уровня символов? Как вы могли бы реализовать n-gram-токенизатор в PHP?
Во-первых, я хотел бы знать, что такое N-граммы. Это верно? Вот как я понимаю n-граммы:
Предложение: «Я живу в Нью-Йорке».
биграммы уровня слово (2 для п): «# Я», "Я живу", "жить в", "в Нью-Йорке", 'Нью-Йорк #'
биграмм уровня персонажа (2 для п): «#I», «I #», «#l», «li», «iv», «ve», «e #», «#i», «in», «n #», «#N», «Нью-Йорк», «Y #»
Когда у вас есть этот массив п-гры-части, вы уронили повторяющиеся из них и добавить счетчик для каждой части, давая частоту: биграммы уровня
слова: [1 , 1, 1, 1, 1]
уровень персонажа bigrams: [2, 1, 1, ...]
Это правильно?
Кроме того, я хотел бы узнать больше о том, что вы можете сделать с н-г:
- Как я могу определить язык текста с помощью п-граммы?
- Можно ли использовать машинный перевод с использованием n-граммов, даже если у вас нет двуязычного корпуса?
- Как создать спам-фильтр (спам, ветчина)? Объединить n-граммы с байесовским фильтром?
- Как я могу найти тему? Например: есть ли текст о баскетболе или собаках? Мой подход (сделайте следующее со статьей Википедии для «собак» и «баскетбола»): постройте векторы n-gram для обоих документов, нормализуйте их, вычислите расстояние Манхэттен/Евклида, чем ближе результат к 1, тем выше будет сходство
Что вы думаете о моем приложении, особенно в последнем?
Надеюсь, вы можете мне помочь. Заранее спасибо!
Существует библиотека PHP, которая делает это для вас: https://packagist.org/packages/drupol/phpngrams –