Quiero contar el número de ocurrencias de todos los bigrams (par de palabras adyacentes) en un archivo usando python. Aquí, estoy tratando con archivos muy grandes, así que estoy buscando una manera eficiente. Intenté usar el método de conteo con la expresión regular "\ w + \ s \ w +" en el contenido del archivo, pero no resultó ser eficiente.Cuenta de bigrams (par de dos palabras) en un archivo usando python
p. Ej. Digamos que quiero contar el número de Bigramas de un a.txt archivo, que tiene los siguientes contenidos:
"the quick person did not realize his speed and the quick person bumped "
Para archivo anterior, la bigram fijar y su recuento serán:
(the,quick) = 2
(quick,person) = 2
(person,did) = 1
(did, not) = 1
(not, realize) = 1
(realize,his) = 1
(his,speed) = 1
(speed,and) = 1
(and,the) = 1
(person, bumped) = 1
I han encontrado un ejemplo de objetos Counter en Python, que se usa para contar unigramas (palabras sueltas). También utiliza el enfoque regex.
El ejemplo dice así:
>>> # Find the ten most common words in Hamlet
>>> import re
>>> from collections import Counter
>>> words = re.findall('\w+', open('a.txt').read())
>>> print Counter(words)
La salida del código anterior es:
[('the', 2), ('quick', 2), ('person', 2), ('did', 1), ('not', 1),
('realize', 1), ('his', 1), ('speed', 1), ('bumped', 1)]
Me preguntaba si es posible utilizar el objeto de contador para obtener el recuento de Bigramas. Cualquier otro enfoque que no sea el objeto Counter o regex también será apreciado.
pegar el texto de la muestra en cuestión. –
¿Tiene que manejar varias líneas o el texto está en una línea por archivo? – mhawke
posible duplicado de [Conteo de frecuencias de bi-gramo] (http://stackoverflow.com/questions/5883573/counting-bi-gram-frequencies) –