|
|
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Стоит следующая задача: перемножить все имеющиеся варианты слов между собой. У меня есть текст в таблице, где каждое слово в отдельной строке Студент бежит к речке Есть варианты слов в таблице: для глаголов бежит ползет тащится Существительных речке озеру морю В итоге надо получить: Студент бежит к речке Студент ползет к речке Студент тащится к речке Студент бежит к озеру Студент ползет к озеру Студент тащится к озеру Студент бежит к морю Студент ползет к морю Студент тащится к морю Причем именно в виде предложений. Подскажите, пожалуйста, как? Таблицы я сделала как: Главная с предложением: Id Id_Word Id_WordClass 1 1 5 2 2 1 3 2 5 4 1 2 C Id_WordClass = 5 - это неизменяемы слова. С Id_WordClass = 1 - глаголы. Id_WordClass = 2 - существительные В самих таблицах: Id_Word Word 1 бежит 2 ползет 3 тащится И также для существительных такую же стурктуру сделала. А как дальше писать джойны и главное, сделать слияние, чтобы не слились в одну строчку вообще все слова? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 02:58:27 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, 1. пример соития строковых констант и переменых: select concat('a',' и ','б',' сидели на ','трубе') from dual 2. есть также более хитрый оператор group_concat который "склеит" значения из разных записей 3. Как сейчас поставлена, ваша задача не решается средствами чистого SQL-а. Если что-то изменится в предложении -- например к речке будет ползти "Удав" или к морю побежит "Аспирант" то придется делать еше один джоин на выборку (Удав, Студент, Аспирант). Фактически, нужно будет строить и выполнять СКЛ на лету. Это вполне возможно внутри "хранимой процедуры" или даже проще на джаве, руби, c#, etc. 4. конкретно как есть сейчас, решение будет: http://sqlfiddle.com/#!2/713b5c/9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 19:56:05 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
пардон, в предыдушем решении таблица Сентенсе даже лишняя, результат зачетверился неподеЦки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 20:02:43 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Это жестко зашито на определенные id, как я понимаю? Свой пример я упростила, там будет не одна запись про студента, а много разных. Какого нибудь full join в mysql нет? Чтобы все же соединять по таблицам не зная точных id. Хотелось бы, конечно, решить задачу на чистом sql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 21:03:11 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, да, как вы поставили задачу снача -- надо чисто зашивать связки заранее. Попробуйте переформулировать задачу ближе к реальной. Основная проблема -- чистый СКЛ не подойдет если заранее вы не знаете какие и сколько связок (джоинтов) будет в запросе. >> Это жестко зашито на определенные id, как я понимаю? В примере я жестко зашил две связки на Fixed на два зашитых ИД. То что связок зашиты -- этого не избежать (на чистом СКЛ) а вот ИД -- наверное -- можно динамически вылавливать из таблицы Сентенсе -- которая может работать как темплейт. Опятьже -- раскрывайте реальную задачу, "будем посмотреть" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 22:06:37 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Здравствуйте. Реальная задача такая же, там у меня только сложней структура. Смысл - получить несколько произвольных предложений из кучи всех возможных. Я подумала, что сделать сразу все и потом выбрать из них нужное количество указав Limit будет лучше, чем вызывать одну процедуру несколька раз. Основная таблица - tbl_detail В ней id слова и id его типа + еще куча разных настроек, уточняющих для выбора слова. Самих слов и их типов может быть много, до 100 на одно предложение, поэтому фиксированное значение я использовать не смогла бы. ((( Также думаю о том, что можно было бы сделать курсор со вставкой во временную таблицу, а потом выбрать все из нее. Или сделать функцию, которая выбирала бы одно произвольное слово из кучи и Group_Concat ее и остальные значения select group_concat (Word, my_function_noun(id_word), my_function_verb(id_word) from tbl_detail where Id_Sentence 3 - как-то вот так. Нужно наиболее производительное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2014, 12:10:17 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskjavajdbc, Здравствуйте. Реальная задача такая же, там у меня только сложней структура. Смысл - получить несколько произвольных предложений из кучи всех возможных. Я подумала, что сделать сразу все и потом выбрать из них нужное количество указав Limit будет лучше, чем вызывать одну процедуру несколька раз. Основная таблица - tbl_detail В ней id слова и id его типа + еще куча разных настроек, уточняющих для выбора слова. Самих слов и их типов может быть много, до 100 на одно предложение, поэтому фиксированное значение я использовать не смогла бы. ((( Также думаю о том, что можно было бы сделать курсор со вставкой во временную таблицу, а потом выбрать все из нее. Или сделать функцию, которая выбирала бы одно произвольное слово из кучи и Group_Concat ее и остальные значения select group_concat (Word, my_function_noun(id_word), my_function_verb(id_word) from tbl_detail where Id_Sentence 3 - как-то вот так. Нужно наиболее производительное решение. чтобы что-то ускорять надо сделать хоть одно логически правильное работаюшее решение. Например, сделайте решение полностью на языке C#, Java, perl или что вы еще знаете? Когда надо -- обрашайтесь к базе за набором слов одного типа. Слысл -- в отработке алгаритма на языке высогоко уровня а не в скорости. Испоользование временых таблиц или массивов языка програмирования -- на ваш вкус Затем этот алгоритм можно переделать (или сразу писать) на язык хранимых процедур. Здесь использование временых таблиц приветствуется Затем можно попробовать написать кодо-генератор который по заданых значениям (конкретная структура предложения) сгенерирует громадный СКЛ и вот он и может быть самым быстрым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 02:11:45 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Здравствуйте. Извините, пожалуйста, но почему это решение неправильное? Структуру я могу поменять как угодно, почему сделать полность на sql, это ошибка? хочется написать процедуру, передать ей параметр и получить результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 11:50:37 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskпочему это решение неправильное?потому что в скле соединяются таблицы, причём заранее известно, какие с какими у вас же количество соединений (о чём уже сказали выше) зависит от количества записей таблицах (по крайней мере в одной из них) ElenaTomskхочется написать процедуру, передать ей параметр и получить результат Нужно наиболее производительное решениеДа не вопрос http://sqlfiddle.com/#!2/cd81a0/11 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. получаем текст запроса, потом prepare+execute При желании можно и от хардкода в виде этих verb/noun в case-ах избавиться, надо будет завести ещё одну табличку с именами словарных таблиц ElenaTomskС Id_WordClass = 1 - глаголы. Id_WordClass = 2 - существительныеidtablename1verb2noun5fixedну и запрос допилить соответствующим образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 12:58:43 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
>> ElenaTomsk >> Здравствуйте. Извините, пожалуйста, но почему это решение неправильное? >> Структуру я могу поменять как угодно, почему сделать полность на sql, >> это ошибка? Как уж сказал tanglir -- чистый СКЛ требует что бы все связки-жоинты были зафиксированы заранее. >> хочется написать процедуру, передать ей параметр и получить результат. А вот сделать эту задачу на "процедурном СКЛе" -- конечно возможно и нужно -- опятьже tanglir показал вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 18:31:46 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, Здравствуйте. таблица со спискм слов у меня уже есть. Я ваш код поменяла по своему разуменю, он не работал. Получается вот так: Тогда в одной строке в первой сразу видно что студент встречается дважды, это не правильно. У меня еще в таблице деталей, основная которая, есть поле OrderWord, в нем хранится порядок, на каком месте слово в предложении. Только даже если сортировать по нему, то все равно будут два студента. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 19:23:13 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskв нем хранится порядок, на каком месте слово в предложенииЯ думал, порядок слов задаётся в sentence.id, но там нигде нет указания, что на месте А с кодом 5(т.е. фиксированное) должно стоять именно слово Б, а не В, Г или Ё. Поэтому генерируются все возможные сочетания. Если у вас это всё-таки где-то задаётся, показывайте уже структуру. Настоящую, а не огрызки. И условие уточните, потому что если исходить из данных приведённой таблицы sentence, то мой вариант вполне себе правильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 19:41:41 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglirпоказывайте уже структуру. Настоящую, а не огрызки. И условие уточните, потому что если исходить из данных приведённой таблицы sentence, то мой вариант вполне себе правильный. Здравствуйте. Вот это будет практически полноценная структура, убрала только кучу незначащих здесь полей наподобией всех свойств глагола и тому подобного. С огромным удовольствием и благодарностью распишу еще если что-то нужно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 22:35:59 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, 1. более стандартным является суффих _id а не префикс id_ 2. попробуйте поместить ВСЕ слова в ОДНУ таблицу и добавить поле typeword со значениями 'verb','fixed','adject'.... и.т.д. ну или форенд-ки ИД на таблицу typeword 3. соответсвено таблица связок тоже будет одна. 4. далее, в какой таблице лежит шаблон ? Каким образом из входных параметров (3, "для студентов") получается цепочка 1,3,7,10,14 ? авторВ итоге выбирается произвольный id - например, 3. Далее выбирается тип предложения - "для студентов". Получается некоторый шаблон получается: 1 - глагол 3 - знак препинания 7 - прилагательное 10 - существительное 14 - фиксированное слово 5. Что такое ID_PARENT=3 ? понятно что это заданое значение, но для какой таблицы? 6. каким образом в результируюшей таблице полился порадок которым мы наблюдаем? Порядо типов слов получились 14,3,10,3,1,14,14 -- это никак не похоже на шаблон типов 1,3,7,10,14 7. Вам бы человека сначала нанять на написание бизнесс задачи, а уж потом в СКЛ идти. Ничего личного, я понимаю что задача интересная и "кудато полезная", но куда она лезет --- сложно понять :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 23:19:11 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте javajdbcElenaTomsk, 2. попробуйте поместить ВСЕ слова в ОДНУ таблицу и добавить поле typeword со значениями 'verb','fixed','adject'.... и.т.д. ну или форенд-ки ИД на таблицу typeword Я думала об этом. С одной стороны, оно упростит выборку, с другой - создаст кучу ненужных индексов. Общее число слов около 70 тысяч. При этом изменяемых среди них около 2 тысяч. А нужны будут индексы по всем свойствам глаголов, по всем свойствам прилагательных, существительных и еще индекс для поля, изменяемое это слово или нет. И еще будет куча ненужных полей в таблице, глаголов меньше всего, а свойств у них больше всего. javajdbc4. далее, в какой таблице лежит шаблон ? есть сам текст, он лежит в таблице parent, есть он же, уже разбитый по словам и их типам, это в таблице detail javajdbcКаким образом из входных параметров (3, "для студентов") получается цепочка 1,3,7,10,14 ? автоматически определятся по наличию слова в определенной таблице. 1 - глагол 3 - знак препинания 7 - прилагательное 10 - существительное 14 - фиксированное слово[/quot] javajdbc5. Что такое ID_PARENT=3 ? понятно что это заданое значение, но для какой таблицы? Как я уже говорила выше лежит таблица parent, в которой образец "Студент идет к морю". Далее этот образец автоматически распознается и ложиться уже в таблицу detail. основная работа идет с ней. javajdbc6. каким образом в результируюшей таблице полился порадок которым мы наблюдаем? Порядо типов слов получились 14,3,10,3,1,14,14 -- это никак не похоже на шаблон типов 1,3,7,10,14 Это не порядок слов. Порядок определятся в positionword. "14,3,10,3,1,14,14" - это типы слов, 1 - глагол 3 - знак препинания 7 - прилагательное 10 - существительное 14 - фиксированное слово Получается так: Неизменяемое знак препинания изменяемое существительное знак препинания глагол Неизменяемое Неизменяемое javajdbc7. Вам бы человека сначала нанять на написание бизнесс задачи, а уж потом в СКЛ идти. Это не бизнесс задача, это моя курсовая и может быть дипломная потом. И хоть я и настоящая блондинка, но раньше все получалось, мне помогали совсем чуть-чуть, а сейчас этот человек не может:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 11:26:18 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, не придумывайте лишнего. Задача очень простая (если вы не занимаетесь формализацией языка, в чем я очень сомневаюсь) исходные данные Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. Код: sql 1. 2. результат Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 11:42:29 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
исходя из понимания простой вещи, усложняйте для дальнейшего изучения-понимания... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 11:45:02 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovпростое декартовое произведение (!!!???)Ага "Но есть один нюанс" (с). Вернее, даже два: 1) заранее неизвестно ни количество, ни типы слов в предложении 2) отдельные слова должны быть фиксированы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:09:26 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Посмотрите постановку задачи в http://sqlfiddle.com/#!2/265abe/1 данные Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. запрос на формирование заданных шаблонов фраз Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. PNUM TEXT1 Студент утомленно тащится к морю2 от безделья Уголовник тащится Требуется сформировать по заданным шаблонам все возможные вариант построения фраз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:23:22 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
и тут мне стало интересно... авторТребуется сформировать по заданным шаблонам все возможные вариант построения фраз вот фразы Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:51:22 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
вот портянка, покрутите на тестовых дынных вроде работает только concat_ws почему-то чудит, если унутре у него есть подзапросы - я переделал на простой конкат, только добейте в результирующий запрос пробелов Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Alex_Ustinovчто надо сделать? Запрос для построения этих фраз?Перечитайте тему, ТС в принципе всё объяснила, в особенности в последних постах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:56:29 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
lamer yugaзапрос на формирование заданных шаблонов фразНу и опять же 16713331 . Изменилось предложение, и превед запросу. ТС как раз и хочет не строить под каждое предложение запрос ручками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:59:04 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
как в фильме "Начни сначала": - Вот у меня в песне все понятно - НА НЕДЕЛЬКУ ДО 2-ГО Я УЕДУ В КОМАРОВО... Какие еще могут быть варианты? Есть таблицы (четыре), это понятно. непонятна логика заполнения табл. Sentence (!!!) Это уже готовые фразы или ВАРИАНТЫ возможных отношений слов в таблице? Вот это я так понимаю - результат: 1 Студент утомленно тащится к морю 2 от безделья Уголовник тащится А где условие задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:02:12 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovи тут мне стало интересно... авторТребуется сформировать по заданным шаблонам все возможные вариант построения фраз вот фразы Код: plaintext 1. 2. По шаблону "уголовник тащится" должны быть построены фразы {слово из T1}{слово из T2}, то есть Код: plaintext 1. 2. Аналогично по шаблону "утомленно ползет к речке" должны быть построены фразы {слово из T4}{слово из T2}{слово из T3}, за исключением самого шаблона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:03:25 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38778321&tid=1833854]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 314ms |

| 0 / 0 |
