Как я могу создать словарь для большого количества текста и перечислить наиболее часто встречающееся слово? - PullRequest
0 голосов
/ 09 июля 2019

Я новичок в кодировании и пытаюсь создать словарь из большого объема текста, а также хотел бы, чтобы наиболее частое слово отображалось?

Например, если у меня был блок текстатакие как:

text = '' 'Джордж Гордон Ноэль Байрон родился с правой ногой с косой ногой в Лондоне 22 января 1788 года. Он был сыном Екатерины Гордон Гейт, обедневшейНаследница шотландцев и капитан Джон («Безумный Джек») Байрон, вдовец, охотящийся за богатством, с дочерью Августой.Блудный капитан растратил наследство своей жены, отсутствовал по причине рождения единственного сына и в конце концов сбежал во Францию ​​как изгнание от английских кредиторов, где он умер в 1791 году в возрасте 36 лет. '' '

Я знаю шаги, которые хотел бы сделать код.Я хочу, чтобы слова, которые были одинаковыми, но с заглавной буквы, были посчитаны вместе, поэтому Hi и hi будут считаться как Hi = 2.

Я пытаюсь получить код для циклического просмотра текста и создания словаря, показывающего, сколько разкаждое слово появляется.Моя конечная цель - чтобы они имели кодовое состояние, какое слово встречается чаще всего.

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

Я пытался удалить пробелы, а такжесоздать цикл, но я застрял и не уверен, правильно ли я решаю эту проблему.

a.replace(" ", "")  
#this gave built-in method replace of str object at 0x000001A49AD8DAE0>, I have now idea what this means!

print(a.replace) # this is what I tried to write to remove white spaces

Я не уверен, как создать словарь.

Подсчитать словочастота я бы сделал что-то вроде:

frequency = {}
for value in my_dict.values() :
    if value in frequency :
        frequency[value] = frequency[value] + 1
    else :
        frequency[value] = 1

То, что я ожидал получить, был словарь, который перечисляет каждое слово, отображаемое с числовым значением, показывающим, как часто оно появляется в тексте.

Тогда я хотел, чтобы код показывал слово, которое встречается чаще всего.

Ответы [ 3 ]

0 голосов
/ 09 июля 2019

Во-первых, чтобы удалить все не алфавитные символы, кроме ', мы можем использовать регулярное выражение
После этого просматриваем список слов и используем словарь

import re
d = {}
text = text.split(" ")#turns it into a list
text = [re.findall("[a-zA-Z']", text[i]) for i in range(len(text))]
#each word is split, but non-alphabet/apostrophe are removed  
text = ["".join(text[i]) for i in range(len(text))]
#puts each word back together
#there may be a better way for the short-above. If so, please tell.
for word in text:
    if word in d.keys():
        d[word] += 1
    else:
        d[word] = 1
d.pop("")
#not sure why, but when testing I got one key ""
0 голосов
/ 10 июля 2019

Вы можете использовать регулярные выражения и Counter из collections:

import re
from collections import Counter

text = "This cat is not a cat, even if it looks like a cat"

# Extract words with regex, ignoring symbols and space
words = re.compile(r"\b\w+\b").findall(text.lower())

count = Counter(words)
# {'cat': 3, 'a': 2, 'this': 1, 'is': 1, 'not': 1, 'even': 1, 'if': 1, 'it': 1, 'looks': 1, 'like': 1}

# To get the most frequent
most_frequent = max(count, key=lambda k: count[k])
# 'cat'
0 голосов
/ 09 июля 2019

Это может быть слишком просто для ваших требований, но вы можете сделать это, чтобы создать словарь каждого слова и его количество повторений в тексте.

text = "..." # text here.
frequency = {}
for word in text.split(" "):
    if word not in frequency.keys():
        frequency[word] = 1

    else:
        frequency[word] += 1

print(frequency)

Это только разбивает текст на каждом '' и подсчитывает количество каждого вхождения. Если вы хотите получить только слова, вам, возможно, придется удалить символы «,» и другие символы, которые вы не хотите использовать в своем словаре.

Чтобы удалить такие символы, как ',' do.

text = text.replace(",", "")

Надеюсь, это поможет и удачного кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...