Код ниже, генерирует словари рассола для униграмм книг Google. Он генерирует 26 словарей, таких как словарь слов, начинающихся с a, b, c, ..., z.Создайте униграммы из книг Google, которые начинаются с числа, с использованием regex
p = re.compile(r'^[a-z]*$', re.IGNORECASE)
el = 'abcdefghijklmnopqrstuvwxyz'
for l in el:
fname, url, records = next(readline_google_store(ngram_len=1, indices=l))
unigrams = {}
count = 0
for r in records:
if (r.year >=2000):
w = r.ngram.lower()
if p.match(w):
if w in unigrams:
unigrams[w] += np.array([r.match_count, r.volume_count])
else:
unigrams[w] = np.array([r.match_count, r.volume_count])
with open(str(l)+'_unigram_dict.pickle', 'w') as f:
pickle.dump(unigrams, f)
Выход как {'word':[total_match_count, total_volume_count]}
Я хочу, чтобы изменить его, чтобы иметь только словарь слов, которые начинаются с цифры. Регулярное выражение должно ловить шаблон, начинающийся с числа (от 0 до 9), за которым следует любой символ. Я пробовал re.compile(r'^(?:\d*\.)?\d+$', re.IGNORECASE)
, но он только ловит числовые слова. Он не отражает такие слова, как: "00161_VERB" или "002,200_NUM" или "01-73" и т.д.
Edit: вход (запись) в этом формате:
ngram TAB year TAB match_count TAB page_count NEWLINE
Я хочу выход будет словарем с ключевым ngrams, которые начинаются с «0» и значения списка [ «суммы match_count на протяжении многих лет», «суммой PAGE_COUNT за года»], как это:
{'ngrams':['sum of match_count over the years', 'sum of page_count over the years']}
Дайте входные данные и требуемые выходы, которые включают в себя выбросы, которые вы не можете поймать. Это поможет нам ответить на вопрос лучше =) – alvas
Попробуйте просто 're.compile (r '^ \ d')'. –
'' 're.compile (r '^ \ d')' '' не записывает ngrams, как '002,200_NUM' – Elm662