Python - Самый эффективный способ узнать, как часто каждая возможная пара слов встречается в одной строке в текстовом файле? - PullRequest
2 голосов
/ 01 октября 2010

Эту конкретную проблему легко решить, но я не уверен, что решение, к которому я пришел, было бы вычислительно эффективным.Поэтому я спрашиваю экспертов!

Как лучше всего пройти по большому файлу, собирая статистику (для всего файла) о том, как часто два слова встречаются в одной строке?

Например, если текст содержал только следующие две строки:

«Это белый бейсбол».«У этих парней белые бейсбольные биты».

В конечном итоге вы получите следующую статистику: (это: 1), (это,: 1), (это, белые: 1), (это, бейсбол: 1), (есть,: 1), (есть, белый: 1), (есть, бейсбол: 1) ... и т. д.

Для входа (бейсбол, белый:2) значение будет равно 2, поскольку эта пара слов встречается в одной строке в общей сложности 2 раза.

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

1 Ответ

4 голосов
/ 01 октября 2010
from collections import defaultdict
import itertools as it
import re

pairs = defaultdict(int)

for line in lines:
    for pair in it.combinations(re.findall('\w+', line), 2):
        pairs[tuple(pair)] += 1

resultList = [pair + (occurences, ) for pair, occurences in pairs.iterkeys()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...