289 / 34 / 6
Регистрация: 20.09.2011
Сообщений: 464
1

Уникальность одного текста относительно другого

20.01.2012, 16:53. Показов 1685. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте! Возникла необходимость написать программу, которая могла бы определять уникальность одного текста относительно другого.

Сперва я хотел определить количество одинаковых предложений в обоих текстах, но данный вариант не позволит определить точный процент уникальности. Такой же результат будет, если вместо предложений сравнивать количество одинаковых слов.

По какому алгоритму стоит действовать, чтобы процент уникальности был более точен?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2012, 16:53
Ответы с готовыми решениями:

Как получить координаты окна относительно одного монитора?
как получить координаты окна относительно одного монитора в многомониторной винде? GetWindowRect...

HEIGHT одного блока DIV относительно другого
Есть блоки DIV (например main и left), у блока left высота (height) 800px, позиционирование...

Вычисление одного поля на форме относительно другого
Доброго времени суток. Прошу Вас помочь с формой на которой есть вичисляемое поле, которое равно...

Привязка координат одного Shape относительно другого
Доброго всем времени суток! Имеется задача сделать некие сложные "узлы", состоящие из подложки,...

6
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
20.01.2012, 17:06 2
Цитата Сообщение от galaid Посмотреть сообщение
Здраствуйте! Возникла необходимость написать программу, которая могла бы определять уникальность одного текста относительно другого.

Сперва я хотел определить количество одинаковых предложений в обоих текстах, но данный вариант не позволит определить точный процент уникальности. Такой же результат будет, если вместо предложений сравнивать количество одинаковых слов.

По какому алгоритму стоит действовать, чтобы процент уникальности был более точен?
сравнивать надо либо по предложениям в целом, либо по похожим словам в предложениях.
сам алгаритм
повторить for i:=0 to кол. во слов в тексте. само кол во слов можно через pos (text, ' ') - какого поличество повторяющихся пробелов, столько же и слов.
если в тексте 1 есть i слово от 2го текста то +1 к похожести
0
289 / 34 / 6
Регистрация: 20.09.2011
Сообщений: 464
20.01.2012, 17:20  [ТС] 3
ncuX1, спасибо. С реализацией программы, думаю, проблем у меня не возникнет. Нужен какой-нибудь алгоритм, позволяющий максимально качественно провести анализ двух текстов.

Под качественным анализом подразумевается то, что программа будет сравнивать не только слова но и фразы. Например, следующие два текста не являются уникальными относительно друг друга на 100%:
1 текст:
Ночь. Шел сильный.

2 текст:
Была ночь и шел дождь.
0
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
20.01.2012, 17:33 4
Цитата Сообщение от galaid Посмотреть сообщение
ncuX1, спасибо. С реализацией программы, думаю, проблем у меня не возникнет. Нужен какой-нибудь алгоритм, позволяющий максимально качественно провести анализ двух текстов.

Под качественным анализом подразумевается то, что программа будет сравнивать не только слова но и фразы. Например, следующие два текста не являются уникальными относительно друг друга на 100%:
Разработай искуственный интеллект, который по смыслу поймёт... А если разработаешь то тебе дорога в гугл- от дорвеев алгаритмы писать.

а вообще- можно сначала сравнивать по слову, потом по сочетаниям, потом по целым предложениям.
Скажем, если схожие слова, то +1 в переменную похожести, если словосочетание- то +3, если предложение, то +10 (а если в предложении более 200 символов, то +20, 30 и т.п.).

потом вычисляем процент похожести в текстах по формуле:

temp:=((слова 1го теста+ слова 2го текста)/2)/100; //1%
lebel1.caption:='тесты схожи на'+inttostr(переменная похожести / temp)+'%';

как то так.
0
289 / 34 / 6
Регистрация: 20.09.2011
Сообщений: 464
20.01.2012, 17:38  [ТС] 5
Цитата Сообщение от ncuX1 Посмотреть сообщение
а вообще- можно сначала сравнивать по слову, потом по сочетаниям, потом по целым предложениям. Скажем, если схожие слова, то +1 в переменную похожести, если словосочетание- то +3, если предложение, то +7.
В принципе вариант неплохой. Думаю, что по словам сравнивать вообще не нужно, так как в тексте могут присутствовать предлоги, союзы, местоимения, которые не должны влиять на уникальность. Однако, используя такие варианты, программа будет выполняться достаточно долго, особенно учитывая то, что тексты могут быть большого объема. Если не найду лучшего решения, то придется оптимизировать этот вариант.
0
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
20.01.2012, 17:43 6
Цитата Сообщение от galaid Посмотреть сообщение
Думаю, что по словам сравнивать вообще не нужно, так как в тексте могут присутствовать предлоги, союзы, местоимения, которые не должны влиять на уникальность.
если слово длиной менее 3х символов, то ничего не прибавляем- можно так.
0
1485 / 1412 / 240
Регистрация: 19.02.2010
Сообщений: 3,913
22.01.2012, 21:46 7
galaid, вариантов куча.
1) разность двух частотных словарей (частотный словарь - вероятность встречи какого-то символа в тексте) свернуть в скаляр формулой обычной энтропии.
2) вместо частотного словаря - матрица переходных вероятностей в марковской цепи (в данном случае - перехода от символа к символу), далее разность матриц для двух текстов и снова энтропийная формула (уже не над вектором, а над матрицей - ну так её развернуть в вектор можно хоть по строкам, хоть по столбцам)
3) замутить что-нибудь с расстоянием Левенштейна
И т.д. Лень сейчас фантазировать.
0
22.01.2012, 21:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2012, 21:46
Помогаю со студенческими работами здесь

Квартернионы. Расчет координат вектора при смещении одного узла относительно другого
Добрый день! Помогите, пожалуйста, решить задачу. Есть три связанных между собой узла. Один узел...

Отделение одного текста от другого текста в TextField
Помогите пожалуйста. Я пишу консоль отладки для своей игры. У меня возникла проблема. Есть...

Два, рядом стоящие эллипса, изменяют размеры, цвета заливки, положение одного относительно другого
Нужна помощь с написанием кода: Два, рядом стоящие эллипса, изменяют размеры, цвета заливки,...

Запись текста из одного файла в конец другого
Есть два текстовых файла, как просто добавить текст одного файла в конец другого? Объединить их,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru