Jump to content
  • 0

Алгоритм


crautcher
 Share

Question

разбиваем вопрос на тэги (искомые слова)

получаем все вопросы созержащии хоть 1 из тэгов

находим вопросы где максимальное количество тэгов

выводим рандомный из них (Question) .

нужно сделать чтоб както добавлялся вопрос в бд если он оригинальный , как определить его оригинальность ?

у меня есть идея только посчета процентного соотношения найденых тэгов к ненайденым тэгам в (Question).

например вопрос "кто основал город Рига" , Question - "Кто построил город Рига" - процент соотношение не найденых тэгов в вопросе 1/3 = 33% - не добавляем , а если вопрос -"какие хорошии клубы в городе Рига", Question - "Кто построил город Рига" - 3/2 = 150% - добaвляем.

но сдаётся что так отсеется сличком много нужного

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

crautcher, очень непонятный вопрос... от куда ты берёшь 1/3,3/2...? Ты на примере напиши что есть и что должно получиться

попробую еще раз:

я задаю вопрос "Кто любит гулять по ночам". Что проишодит , мы получаем тэги - "кто" "любит" "гулять" "ночам" (предлоги не учитываю).

По ним ищем вопрос в базе , предположим в базе 2 вопроса (там их дохрена) - "Кто любит меня" и "Кто любит трахатся по ночам"

определяем что (тут назову переменную чтоб на нее ссылатйса дальше)$Question = "Кто любит трахатся по ночам" вероятнее чем 1ый , так как в нем 3 тэга ,а в другом 2.

тут всё ок , а вот дальше нужно определить оригинатьность задоного вопроса , и если ничего похожего нет , добавить его в базу данных.

(тут я вернусь к первоначальному примеру)

вопрос "кто основал город Рига" ,найденый Question - "Кто построил город Рига" процент соотношение не найденых тэгов в вопросе 1/3 = 33% (1 слово из вопроса не найдено , 3 найдены)

- не добавляем ,

а если вопрос -"какие хорошии клубы в городе Рига", Question - "Кто построил город Рига" - 3/2 = 150% - добaвляем.

Link to comment
Share on other sites

  • 0

т.е. тэги не ты добавляешь, а они вычисляются из вопроса? И тогда ещё один вопрос.. Как ты удаляешь из этой системы предлоги и союзы, и как ты убираешь окончания в словах?

Link to comment
Share on other sites

  • 0

т.е. тэги не ты добавляешь, а они вычисляются из вопроса? И тогда ещё один вопрос.. Как ты удаляешь из этой системы предлоги и союзы, и как ты убираешь окончания в словах?

стринг_реплейсом убираю, не суть - всё работает , можешь дороботать или придумать новую систему определения есть ли чтото похожее? то что я придумал уж очень не точно

Link to comment
Share on other sites

  • 0

ну вообще на вскидку могу предложить один вариант.. Делаем таблицу следующей структурой

- идентификатор

- идентификатор вопроса

- тэг

1. выбираем тэги исходного вопроса

2. выбираем идентификаторы вопросов по каждому тэгу исходного

3. заносим (к примеру) идентификаторы в массив

4. потом достаём из массива идентификатор вопроса который чаще всего встречается

На примере..

1. имеем вопрос "Кто построил город Рига"

2. Получаем 4 тэга: "кто", "построил", "город", "Рига"

3. достаём и заносим в массив тэги

- "кто" имеют вопросы с идентификатором 1, 2, 5

- "постоил" - 2, 6, 7

- "город" - 1, 2, 8, 9

- "Рига" - 1, 2, 3, 8

4. Получаем массив

array(1,1,1,2,2,2,2,3,5,6,7,8,8,9)

5. И видим что чаще всего встречается идентификатор 2. Значит ближе всего к исходному вопросу вопрос с идентификатором 2

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0

Ну раз уж это рубрика PHP предложу вариант:


<?php
$s[] = 'Кто любит гулять по ночам';
$s[] = 'Кто любит меня';
$s[] = 'Кто любит трахатся по ночам';

Echo '<p>Текст «<em>'.$s[1].'</em>» похож на текст «<em>'.$s[0].'</em>» на '.similar_text($s[0], $s[1]).'%';
Echo '<p>Текст «<em>'.$s[2].'</em>» похож на текст «<em>'.$s[0].'</em>» на '.similar_text($s[0], $s[2]).'%';
?>

Выводит:

Текст «Кто любит меня» похож на текст «Кто любит гулять по ночам» на 22%

Текст «Кто любит трахатся по ночам» похож на текст «Кто любит гулять по ночам» на 37%

Link to comment
Share on other sites

  • 0

LunatiK, так тут просто вычисляется схожесть всей фразы, а нужны именно по тэгам.. Хотя можно по этому принципу оставить в вопросах только нужное :)

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0

Цель-то вычислить похожесть, насколько я понял, а методика может быть разная, по тегам или нет.

а он выведет разницу "я люблю лошадей , очень - очень" и "я очень люблю лошадей" , думаю да , этим метод тэгов лучше

Link to comment
Share on other sites

  • 0

Цель-то вычислить похожесть, насколько я понял, а методика может быть разная, по тегам или нет.

а он выведет разницу "я люблю лошадей , очень - очень" и "я очень люблю лошадей" , думаю да , этим метод тэгов лучше

Да, здесь вы правы

Но у вас, я так и не понял как решается проблема с окончаниями. У вас большой словарь ?

Link to comment
Share on other sites

  • 0

Цель-то вычислить похожесть, насколько я понял, а методика может быть разная, по тегам или нет.

а он выведет разницу "я люблю лошадей , очень - очень" и "я очень люблю лошадей" , думаю да , этим метод тэгов лучше

Да, здесь вы правы

Но у вас, я так и не понял как решается проблема с окончаниями. У вас большой словарь ?

есть файлы которые хранят все русские существительные , глаголы ,прилогательные и наречия

Link to comment
Share on other sites

  • 0

ну так существительные имеют окончания. Например, коровА, собакА. Что-то ты хитришь ;) одного словаря мало для обработки окончаний и суффиксов. Нужны или специальные словари с корневым содержанием или специальные механизмы парсинга

Link to comment
Share on other sites

  • 0

ну так существительные имеют окончания. Например, коровА, собакА. Что-то ты хитришь ;) одного словаря мало для обработки окончаний и суффиксов. Нужны или специальные словари с корневым содержанием или специальные механизмы парсинга

нефига , а род по твоему не влияет?

ходить - обрубаем "ть" , теперь найдем ходит , ходил , ходила . Наречия для составных - "Главнокомандующий" например , и прилагательные тоже имеют окончания , красивый , красивому , красивой

ты наверно думаешь что я ищу по полному совпадению, это не так:

strpos("крутая","крут")

основной механизм

Edited by crautcher
Link to comment
Share on other sites

  • 0

crautcher, ты что мне хочешь доказать то? :rofl: Вообще-то это я спрашиваю как ты с окончаниями и суффиксами разбираешься. И механизм замены то понятен , то только у тебя словарь только корней слов и словарь слов? И возвращаясь к КОРОВАМ

исходное слово КОРОВА и как ты будешь заменять КОРОВЫ, КОРОВУ, КОРОВОЙ. В них ты не найдёшь "КОРОВА"

Или ещё один примерчик.. ПАРИКМАХЕР, а в тексте парикмахерА, парикмахерУ.... Но есть слова ПАР, ПАРИК..

Так что система намного сложнее. А то что ты приводишь в пример, очень и очень далёкое от автоматизированной обработки.

Link to comment
Share on other sites

  • 0

crautcher, ты что мне хочешь доказать то? :rofl: Вообще-то это я спрашиваю как ты с окончаниями и суффиксами разбираешься. И механизм замены то понятен , то только у тебя словарь только корней слов и словарь слов? И возвращаясь к КОРОВАМ

исходное слово КОРОВА и как ты будешь заменять КОРОВЫ, КОРОВУ, КОРОВОЙ. В них ты не найдёшь "КОРОВА"

Или ещё один примерчик.. ПАРИКМАХЕР, а в тексте парикмахерА, парикмахерУ.... Но есть слова ПАР, ПАРИК..

Так что система намного сложнее. А то что ты приводишь в пример, очень и очень далёкое от автоматизированной обработки.

омг , в них я найду "коров" , еще раз говорю я отсекаю окончание, в любом случае когда доделаю проет кину линк и посмотришь что всё работает

Edited by crautcher
Link to comment
Share on other sites

  • 0

да мне просто любопытно как ты отсекаешь окончание и суффиксы.. вот и спрашиваю.. Мне это тоже хочется сделать в одном из своих проектов

если последняя буква глассная беру и отсекаю её (или совподает со списком других таких как "ой" и т.д. в русском языке окончаний не много) , окончание не может быть согласной или не иметь гласную букву на конце в форме без окончания - чайник (последняя "к" - не катит) , (мама , маме , маму) - отсекается под "мам" , (армия , армию) - отсекается под "арми"

это к существительным!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy