2010-08-19 5 views
1

данные будут храниться в базе данных MySQL, как это:группировка строк по подстроке в MySQL/питона или MySQL/.net

5911 CD $4.99 Eben, Landscapes of Patmos {w.Martin Lenniger, percussion}; 2 Choral Phantasies; Laudes. (All w.Sieglinde Ahrens, organ) 
5913 CD $5.99 Turina, Sevilliana; Rafaga; Hommage a Tarrega; Sonata. Rodrigo, 3 Piezas Espanolas; En Los Trigales; Sarabande Lointaine. (Eric Hill, guitar^) 
145460 CD $13.98 Wagner, The Flying Dutchman. (Hans Hotter, Astrid Varnay, Set Svanholm et al. Cond. Reiner. Rec.1950. PLEASE NOTE: Limited-pressing CDRs) 
145461 CD $13.98 Montemezzi, L'Amore dei Tre Re. (Virgilio Lazzari, Dorothy Kirsten, Charles Kullman, Robert Weede, Leslie Chabay et al. Cond. Giuseppe Antonicelli. Rec. 1949. PLEASE NOTE: Limited-pressing CDRs) 
145462 CD $13.98 Ponchielli, La Gioconda. (Zinka Milanov, Giacomo Vaghi, Leonard Warren, Rise Stevens, Richard Tucker, Margaret Harshaw et al. Cond. Emil Cooper. Rec. 1946. PLEASE NOTE: Limited-pressing CDRs) 
145465 CD $5.99 ' Yankele: Yiddish Songs'. (16 titles incl. Az der Rebe, Rozhinkes mit Mandlekh, Shabes, Yankele, Belz, Di Grine Kuzine. Moshe Leiser, voice and guitar. Ami Flammer, violin. Gerard Barreaux, accordion. Rec. 'live', Lyon Opera. Total time: 78') 
145467 CD $4.99 Brahms, Piano Trios 2 & 3. (Trio Bamberg: Evgeny Schuk, violin; Stephan Gerlinghaus, cello. Robert Benz, piano. Rec. Nuremberg, 4/7/2000. Total time: 51'45') 
145468 CD $4.99 Gaubert, Piece Romantique; Trois Aquarelles. Debussy, Premier Trio in G. Francaix, Trio. (Trio Cantabile: Hans-Jorg Wegner, flute. Guido Larisch, cello. Christiane Kroeker, piano. Rec. Hannover, 3/2001. Total time: 62'35') 
145469 CD $4.99 Gattermeyer, Heinrich [b.1923]: Ophelias Schattentheater [text by Michael Ende]. Matthias Drude [b.1960], Jorinde und Joringel. Christoph J. Keller [b.1959], Die Kristallkugel [both texts by Brother Grimm]. (Helmut Thiele, narrator w.Bernd-Christian Schulze, piano. Total time: 68'08') 
145470 CD $2.99 Morrill, Dexter [b.1938]: Dance Bagatelles for Viola & Piano; Three Lyric Pieces for Violin and Piano [Laura Klugherz, viola & violin. Jill Timmons, piano]; Fantasy for Solo Cello [James Kirkwood, cello]; String Quartet #2 [Tremont String Quartet]. (Total time: 51'03') 
145471 CD $2.99 Werntz, Julia: String Trio with Homage to Chopin [Curtis Macomber, violin. Lois Martin, viola. Ted Mook, cello]; 'To You Strangers'- Five Poems of Dylan Thomas for Mezzo-Soprano Solo [Christina Ascher]; Piano Piece [John McDonald]. John Mallia, Lock [Stephanie Kay, clarinet]; Poor Denizens of Hell [chamber ensemble/ Daniel Hosken]; Plexus 2. (Aura Group for New Music) 
145472 CD $2.99 Morrill, Dexter [b.1938]- 'Music for Trumpets': 'Ponzo' for Two Trumpets; 'Nine Pieces' for Solo Trumpet; 'TARR' for Four Trumpets & Computer; 'Studies' for Trumpet & Computer; 'Trumpet Concerto' for Trumpet & Piano. (Mark Ponzo, trumpet with Barbara Butler [trumpet] & William Koehler, piano. Total time: 52'02') 
145473 CD $2.99 Kallstrom, Michael [b.1956]: 'Stories'. (A chamber opera for solo performer with puppets and electronic tape based on Old Testament stories) 
145474 CD $2.99 Carosio, Vailati, Lechi, Ponchielli, D'Alessandro, Sterzati, Riva, Pucci, Casazza, Denti, Gnaga, Anelli, Feroldi: 'The Mandolins of Stradivari'. (16 pieces for mandolin ensemble et al. Ugo Orlandi, mandolin. Alessandro Bono, guitar. Maura Mazzonetto, piano. Giampaolo Baldin, baritone. Quartetto romantico a plettro 'Umbert Sterzati'. Orchestra di Mandolini e Chitarre 'Citta di Brescia'/ Mandonico. Total time: 77'19') 
145475 CD $3.99 Rachmaninov, Symphony #3; Symphonic Dances. (St. Petersburg Philharmonic/ Jansons. Total time: 72'16') 

мне нужно каждый заголовок группироваться с 4 другими названиями, которые имеют слова общий. например, если бы я мог сгруппировать 4 компакт-диска, в которых есть слово BEETHOVEN и MOZART в строке.

ОДНАКО, я не хочу указывать, какие слова он должен группировать. я хотел бы, чтобы это было сделано в то искусственно интеллигентно

вот что я думаю, что алгоритм должен выглядеть следующим образом:

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

Кто-нибудь знает любой умный способ группировки это?

ответ

2

Re (2), что вы хотите, называется "стоп-слова" - например, в NLTK (который является Python, но я полагаю, что будет C# эквивалента), за chapter 2 в своей превосходной онлайн книге,

>>> from nltk.corpus import stopwords 
>>> stopwords.words('english') 
['a', "a's", 'able', 'about', 'above', 'according', 'accordingly', 'across', 
'actually', 'after', 'afterwards', 'again', 'against', "ain't", 'all', 'allow', 
'allows', 'almost', 'alone', 'along', 'already', 'also', 'although', 'always', 
...] 

Книга, которую я цитировал, также может помочь с вашей точкой 1, но точка 3 действительно представляет собой другое поле - кластеризация. Вы хотите очень своеобразную кластеризацию (заданный и идентичный размер кластера), поэтому существующие алгоритмы могут вам не подойти, но не сложно их придумать, основываясь на том, что вы упоминаете.

В принципе, вы хотите, чтобы каждое слово стоило «оценки», которое выше для слов, которые реже на английском языке (и NLTK, или любой эквивалентный мощный инструмент для обработки естественного языка на C#, может, конечно, помочь вам в этом) минус логарифм частоты слова, например, может быть началом.

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

На самом деле самая большая проблема может быть другой: что, если есть группа из менее чем 5 документов, которые в совокупности не имеют, есть какие-либо безостановочные слова вместе с любыми другими? Возможность таких случаев показывает, что вам нужно будет ослабить свои характеристики в примерно уважения (поскольку я ничего не знаю о вашем приложении, я не могу дать конкретные предложения, конечно, но это может быть что угодно, ряд документов, отличных от 5, до ослабления критериев группировки и т. д.).

Или вы бы просто поставили диагноз, что существует какая-то ситуация, когда фактическая встреча с вашими трудными ограничениями невозможна, и не вызывать сообщение об ошибке, если это произойдет?

+0

alex, это прекрасный ответ, спасибо большое, я буду ждать, пока другие ответят слишком –

+0

@l__, пожалуйста, если появятся другие ответы, мне тоже будет интересно. BTW, удаление стоп-кодов уменьшит вычислительную нагрузку, но может и не быть серьезной проблемой для вашей задачи: по-видимому, могут быть использованы временные слова по определению, поэтому, используя, например, '-log (freq (word))' в качестве слова «оценка», стоп-слова будут забивать низкую и не должны сильно зависеть.Так что, возможно, вам следует удалить только самые «худшие» стоп-слова («a», «the», «of», ...), не все, что дает NLTK (более 2000 и некоторые из них, например, впоследствии "или" не ", может вообще не быть очень распространенным в вашем конкретном тексте интереса, классических компакт-дисках! -) –

+0

martelli: спасибо. я знаю, что сделал stopwords.words ('english'), и я получаю слова FEWER, чем вы, только как несколько сотен. знаете, почему это так? –

Смежные вопросы