Tengo python lista como la siguiente

documents = ["Human machine interface for lab abc computer applications",
             "A survey of user opinion of computer system response time",
             "The EPS user interface management system",
             "System and human system engineering testing of EPS",
             "Relation of user perceived response time to error measurement",
             "The generation of random binary unordered trees",
             "The intersection graph of paths in trees",
             "Graph minors IV Widths of trees and well quasi ordering",
             "Graph minors A survey"]

Ahora tengo madre (cada palabra) y otra lista. ¿Cómo puedo hacer eso ?

¿Qué significa «madre»? Puede usted proporcionar la muestra de la salida?
Usted va a necesitar para definir lo que significa, exactamente, ‘madre’. Podemos asumir que siempre va a ser el inglés?
Tal vez el etimología el paquete, si usted está buscando para frenar palabras en inglés?
Comentaristas: Derivados en la Wikipedia. La pregunta es todavía ambiguo, aunque-hay cualquier cantidad de derivados estrategias; ¿tienes uno en particular en mente? (Porter?)
es correcto. La lematización es el proceso de la toma de la palabra en su forma de la raíz.

OriginalEl autor ChamingaD | 2012-02-18

7 Comentarios

  1. 34
    from stemming.porter2 import stem
    
    documents = ["Human machine interface for lab abc computer applications",
                 "A survey of user opinion of computer system response time",
                 "The EPS user interface management system",
                 "System and human system engineering testing of EPS",
                 "Relation of user perceived response time to error measurement",
                 "The generation of random binary unordered trees",
                 "The intersection graph of paths in trees",
                 "Graph minors IV Widths of trees and well quasi ordering",
                 "Graph minors A survey"]
    
    documents = [[stem(word) for word in sentence.split(" ")] for sentence in documents]

    Lo que estamos haciendo aquí es el uso de un lista de comprensión un bucle a través de cada cadena dentro de la lista principal, partiendo de que en una lista de palabras. Luego nos bucle a través de la lista, derivados de cada palabra a medida que avanzamos, volviendo la nueva lista de tallo palabras.

    Por favor nota que no han probado esto con derivados instalado – he tomado de los comentarios, y nunca he usado yo. Esta es, sin embargo, el concepto básico para dividir la lista en palabras. Tenga en cuenta que esto va a producir una lista de listas de palabras, mantener la separación original.

    Si no desea que esta separación, que puede hacer:

    documents = [stem(word) for sentence in documents for word in sentence.split(" ")]

    Lugar, el cual te dejará con una lista continua.

    Si quieres formar parte de las palabras de nuevo juntos en el extremo, usted puede hacer:

    documents = [" ".join(sentence) for sentence in documents]

    o hacerlo en una sola línea:

    documents = [" ".join([stem(word) for word in sentence.split(" ")]) for sentence in documents]

    Donde mantener la estructura de la frase, o

    documents = " ".join(documents)

    Donde ignorarlo.

    Que no funciona; cada «palabra» en su listcomp será una lista.
    De hecho, consiguió el orden equivocado, corregido.
    Gracias. se deriva pero divide cada palabra en la lista. ['comput', 'compil', 'translat', 'sourc', 'code', 'into', 'object', 'code,', 'while', 'interpret', 'execut', 'the', 'program'] ['A', 'compil', 'compil', 'your', 'code', 'into', 'a', '"runable"', 'applic', '(e.g:', 'a', '.ex', 'file)', 'where', 'as', 'an', 'intepret', 'run', 'the', 'sourc', 'code', 'as', 'it', 'goe']
    Editado para incluir una forma de unirse a la lista.
    Nace ya no es un paquete de Python 3?

    OriginalEl autor Gareth Latty

  2. 8

    Puede que desee echar un vistazo a la NLTK (Natural Language ToolKit). Dispone de un módulo nltk.madre que contiene diferentes lematizadores.

    Ver también esta pregunta.

    Gracias 🙂 puedo saber cómo iterar a través de toda la lista y madre de todas las palabras ?
    words = [w for line in documents for w in line.split()]. O incluso words = ' '.join(documents).split()

    OriginalEl autor Thomas

  3. 4

    Bien. Así, utilizando la derivados paquete, tendríamos algo como esto:

    from stemming.porter2 import stem
    from itertools import chain
    
    def flatten(listOfLists):
        "Flatten one level of nesting"
        return list(chain.from_iterable(listOfLists))
    
    def stemall(documents):
        return flatten([ [ stem(word) for word in line.split(" ")] for line in documents ])
    ¿Cómo puedo dejar de dividir cada palabra en la lista final ?
    Uniéndose a ellos en conjunto con " ".join(list_of_words)

    OriginalEl autor cha0site

  4. 3

    puede utilizar NLTK :

    from nltk.stem import PorterStemmer
    
    
    ps = PorterStemmer()
    final = [[ps.stem(token) for token in sentence.split(" ")] for sentence in documents]

    NLTK tiene muchas características para los Sistemas de RI, compruebe que

    OriginalEl autor Arash Hatami

  5. 1

    Usted podría utilizar whoosh: (http://whoosh.readthedocs.io/)

    from whoosh.analysis import CharsetFilter, StemmingAnalyzer
    from whoosh import fields
    from whoosh.support.charset import accent_map
    
    my_analyzer = StemmingAnalyzer() | CharsetFilter(accent_map)
    
    tokens = my_analyzer("hello you, comment ça va ?")
    words = [token.text for token in tokens]
    
    print(' '.join(words))

    OriginalEl autor Thomas Decaux

  6. 1
    from nltk.stem import PorterStemmer
    ps = PorterStemmer()
    list_stem = [ps.stem(word) for word in list]

    OriginalEl autor Ghazal

  7. 0

    Usted puede utilizar cualquiera de los PorterStemmer o LancasterStemmer para frenar.

    OriginalEl autor 9113303

Dejar respuesta

Please enter your comment!
Please enter your name here