Обнаружьте и удалите шумовой [закрытый] текст

5
задан Youssef 25 August 2010 в 12:16
поделиться

10 ответов

Ну, вы можете построить классификатор, используя методы НЛП, и обучить его на примерах шума и не-шума. Один из примеров этого - детектор языка от Apache Tika. Если языковой детектор говорит «бьет меня», этого может быть достаточно.

7
ответ дан 18 December 2019 в 06:02
поделиться

Если остальной текст на английском языке, вы можете использовать список слов. Если более определенного процента (скажем, 50%) слов в тексте нет в списке слов, вероятно, это шум.

Вы можете установить порог, скажем, в 5 слов, чтобы предотвратить удаление таких сообщений, как «LOL».

В большинстве установок Linux вы можете извлечь список слов из средства проверки орфографии aspell следующим образом:

aspell --lang en dump master
2
ответ дан 18 December 2019 в 06:02
поделиться

Вам нужно будет начать с более эффективное определение «шумового текста». Здесь сложнее всего определить проблему. Вы не можете написать код, который говорит: «Избавьтесь от строк вроде _____». Похоже, что шаблон, который вы определили, представляет собой «последовательный набор из трех символов в строке, и набор повторяется хотя бы один раз, но может не завершиться чисто (он может завершиться на символе из середины набора)».

Теперь напишите регулярное выражение, соответствующее этому шаблону, и проверьте его.

Но держу пари, есть и другие шаблоны, которые вы ищете ...

2
ответ дан 18 December 2019 в 06:02
поделиться

Удаление подобных вещей не так просто, как может показаться .

Для нас, людей, легко понять, что "djkhfkjh" не имеет никакого смысла. Но как компьютер обнаружит такой шум? Откуда ему знать, что «Эйяфьятлайокудль» - это просто кто-то разбивший свою клавиатуру, или самая шумная гора за последние пару лет?

Вы не можете сделать это надежно без множества ложных срабатываний, так что, в конце концов, он фильтрует ложные -положительные и истинно-позитивные снова вручную.

8
ответ дан 18 December 2019 в 06:02
поделиться

Здесь много хороших ответов. Какой из них будет работать для вас, во многом зависит от специфики вашей проблемы - например, предполагается ли вводить английские слова, имена пользователей, фамилии людей и т. Д.

Один из подходов: написать программу на проанализируйте то, что вы считаете «действительным» вводом. Следите за тем, как часто каждая возможная трехбуквенная последовательность появляется в допустимом тексте. Затем, когда у вас есть ввод для проверки, посмотрите на каждую трехбуквенную последовательность ввода и найдите ожидаемую частоту. Что-то вроде "xzt", вероятно, имеет частоту около нуля. Если у вас слишком много подобных подпоследовательностей, отметьте это как мусор.

Проблемы с этим:

  1. Вы можете рассматривать неправильное написание как мусор, например, если кто-то забыл поставить «u» после «q» в слове.
  2. Вы не поймаете ввод вроде «thethethe».
1
ответ дан 18 December 2019 в 06:02
поделиться

Вставьте фрагменты текста в Google и посмотрите, сколько результатов вы получите.

1
ответ дан 18 December 2019 в 06:02
поделиться

Обучение классификатора NLP, вероятно, было бы лучшим способом. Однако более простым методом может быть простая проверка того, что каждое слово существует в списке всех известных "допустимых" слов. В большинстве Unix-систем есть файл /usr/share/dict/words, который можно использовать для этой цели. Кроме того, Ubuntu расширяет этот список с помощью /usr/share/dict/american-english, /usr/share/dict/american-huge и /usr/share/dict/american-insane, каждый список более полный, чем предыдущий. Эти списки также включают множество распространенных опечаток, поэтому вы не отфильтруете текст, который технически не является словом, но явно распознается как слово.

Если вы действительно амбициозны, вы можете объединить эти подходы и использовать эти списки слов для обучения классификатора Байеса или Максимальной Энтропии.

1
ответ дан 18 December 2019 в 06:02
поделиться

Проверьте каждое слово и посмотрите, сколько там избыточности. Если имеется более трех последовательных повторяющихся групп букв, это хороший кандидат на шум. Также ищите группы букв, которые обычно не принадлежат друг другу, и группы последовательных букв, которые также идут подряд на клавиатуре. Если все слово состоит из таких букв, которые находятся рядом с клавиатурой, оно также занимает место в списке шумов.

2
ответ дан 18 December 2019 в 06:02
поделиться

Получите словарь с таким количеством имен, которое вы можете найти, и отфильтруйте свои данные, чтобы отобразить те, которых нет в словаре. Затем вы должны удалить их одну за другой, чтобы убедиться, что вы не удаляете действительные данные. Сортировка списка по имени может помочь вам удалить больше строк за раз.

3
ответ дан 18 December 2019 в 06:02
поделиться

Примеры #1 и #2 могут быть удалены парсером, который пытается понять, как произносить текст. Независимо от языка они невыразимы и, следовательно, не являются словами.

0
ответ дан 18 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: