Actualmente estoy usando uni-gramos en mi word2vec modelo de la siguiente manera.

def review_to_sentences( review, tokenizer, remove_stopwords=False ):
    #Returns a list of sentences, where each sentence is a list of words
    #
    #NLTK tokenizer to split the paragraph into sentences
    raw_sentences = tokenizer.tokenize(review.strip())

    sentences = []
    for raw_sentence in raw_sentences:
        # If a sentence is empty, skip it
        if len(raw_sentence) > 0:
            # Otherwise, call review_to_wordlist to get a list of words
            sentences.append( review_to_wordlist( raw_sentence, \
              remove_stopwords ))
    #
    # Return the list of sentences (each sentence is a list of words,
    # so this returns a list of lists
    return sentences

Sin embargo, a continuación, voy a extrañar importante bigramas y trigramas en mi conjunto de datos.

E.g.,
"team work" -> I am currently getting it as "team", "work"
"New York" -> I am currently getting it as "New", "York"

Por lo tanto, quiero capturar el importante bigramas, trigramas, etc. en mi conjunto de datos de entrada y en mi word2vec modelo.

Soy nuevo en wordvec y luchando cómo hacerlo. Por favor me ayude.

  • Proporcionar algo de código y un mejor ejemplo. El ejemplo muestra que no se corresponden con los datos que usted proporcionó en la primera línea
  • Hecho! Actualizado a la pregunta. Por favor me ayudan a resolver este problema.
InformationsquelleAutor | 2017-09-09

3 Comentarios

  1. 17

    Primer lugar, usted debe utilizar gensim la clase de Frases con el fin de obtener dígrafos, que funciona como se señaló en el doc

    >>> bigram = Phraser(phrases)
    >>> sent = [u'the', u'mayor', u'of', u'new', u'york', u'was', u'there']
    >>> print(bigram[sent])
    [u'the', u'mayor', u'of', u'new_york', u'was', u'there']

    Para obtener trigramas y así sucesivamente, usted debe utilizar el modelo de bigramas que usted ya tiene y se aplican las Frases a ella de nuevo, y así sucesivamente.
    Ejemplo:

    trigram_model = Phrases(bigram_sentences)

    También hay una buena notebook y vídeo que explica cómo utilizar que …. la notebook, el video

    La parte más importante de ella es cómo se usa en la vida real sentencias de las cuales es la siguiente:

    // to create the bigrams
    bigram_model = Phrases(unigram_sentences)
    
    // apply the trained model to a sentence
     for unigram_sentence in unigram_sentences:                
                bigram_sentence = u' '.join(bigram_model[unigram_sentence])
    
    // get a trigram model out of the bigram
    trigram_model = Phrases(bigram_sentences)

    Espero que esto ayude, pero la próxima vez nos dan más información sobre lo que son y uso, etc.

    P. S: Ahora que editó, usted no está haciendo nada con el fin de obtener los dígrafos solo partir de ella, usted tiene que utilizar Frases con el fin de obtener palabras como Nueva York como dígrafos.

    • Gracias por su valiosa respuesta. Pero cuando yo uso el dígrafo = Fraseador(frases). dice: no definido nombre de Fraseador y frases. Qué necesito para importar?
    • Sí que hay que importarlos, es en los modelos de gensim, sé gensim docs se confunde a veces
    • Por favor, hágamelo saber si usted sabe una respuesta para esto stackoverflow.com/questions/46137572/…
    • Funciona con el inglés no es el idioma?
    • En general es bueno para eliminar las palabras vacías y madre después de creado el n-grama diccionario.
  2. 6
    from gensim.models import Phrases
    
    from gensim.models.phrases import Phraser
    
    documents = 
    ["the mayor of new york was there", "machine learning can be useful sometimes","new york mayor was present"]
    
    sentence_stream = [doc.split(" ") for doc in documents]
    print(sentence_stream)
    
    bigram = Phrases(sentence_stream, min_count=1, threshold=2, delimiter=b' ')
    
    bigram_phraser = Phraser(bigram)
    
    
    print(bigram_phraser)
    
    for sent in sentence_stream:
        tokens_ = bigram_phraser[sent]
    
        print(tokens_)
    • necesita importar debajo de gensim.los modelos de importación Frases de gensim.modelos.frases de importación Fraseador
    • Sería bueno saber la salida de Frases y Fraseador y lo de bigramas y bigram_phraser parece. ¿Qué acerca de Word2Vec con sg=1, para saltar gramo=1 con la negativa de muestreo y de la ventana
  3. 1

    Frases y Fraseador son los que deben buscando

    bigram = gensim.models.Phrases(data_words, min_count=1, threshold=10) # higher threshold fewer phrases.
    trigram = gensim.models.Phrases(bigram[data_words], threshold=100) 

    Una vez que están lo suficientemente hecho con la adición de vocabs, a continuación, utilizar Fraseador para un acceso más rápido y eficiente el uso de la memoria. No es obligatorio, pero útil.

    bigram_mod = gensim.models.phrases.Phraser(bigram)
    trigram_mod = gensim.models.phrases.Phraser(trigram)

    Gracias,

    • Cómo usarla para entrenar y evaluar los datos? Quiero usar los datos del tren para aprender frases y luego transformarlo a prueba. ¿Cómo puedo hacer eso?

Dejar respuesta

Please enter your comment!
Please enter your name here