Использование известных пакетов Python для реализации сходства N-Gram, TF-IDF и Cosine - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь реализовать функцию подобия, используя

  • N-грамм
  • TF-IDF
  • Cosine Similaity

Пример enter image description here

Концепция:

words = [...]
word = '...'
similarity = predict(words,word)

def predict(words,word):
     words_ngrams = create_ngrams(words,range=(2,4))  
     word_ngrams =  create_ngrams(word,range=(2,4))

     words_tokenizer = tfidf_tokenizer(words_ngrams)
     word_vec = words_tokenizer.transform(word)

     return cosine_similarity(word_ved,words_tokenizer)

Я искал в Интернете простую и безопасную реализацию, но не смог найти такую, в которой бы использовались известные пакеты Python как sklearn, nltk, scipy и т. Д.
большинство из них используют "сделанные самостоятельно" вычисления.

Я стараюсь избегать написания кода каждый шаг вручную, и я предполагаю, что есть простое решение для всего этого «конвейера».

любая помощь (и код) будет принята с благодарностью. tnx:)

1 Ответ

0 голосов
/ 15 июля 2018

В конце концов я понял это ...

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

'''
### N-Gram & TD-IDF & Cosine Similarity
Using n-gram on 'from column' with TF-IDF to predict the 'to column'.
Adding to the df a 'cosine_similarity' feature with the numeric result.
'''
def add_prediction_by_ngram_tfidf_cosine( from_column_name,ngram_range=(2,4) ):
    global df
    from sklearn.feature_extraction.text import TfidfVectorizer
    from sklearn.metrics.pairwise import cosine_similarity
    vectorizer = TfidfVectorizer( analyzer='char',ngram_range=ngram_range )
    vectorizer.fit(df.FromColumn)

    w = from_column_name
    vec_word = vectorizer.transform([w])

    df['vec'] = df.FromColumn.apply(lambda x : vectorizer.transform([x]))
    df['cosine_similarity'] = df.vec.apply(lambda x : cosine_similarity(x,vec_word)[0][0])

    df = df.drop(['vec'],axis=1)

Примечание: это не готово к производству

...