0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 2
1

Новичок, очень хочу разобраться

15.03.2018, 23:34. Показов 1109. Ответов 5
Метки нет (Все метки)

1)После открытия и прочтения файла требуется разбить текст на отдельные слова (именно слова, без знаков препинания).
2)Затем посчитать статистические данные: сколько в тексте слов длины 1, слов длины 2 и т.д. Статистику потребуется нормализовать, т.е. поделить количество слов в каждой категории на количество всех слов и выразить это отношение в процентах. После этого эти подсчитанные количества остаётся вывести на экран в порядке возрастания длин слов.
3)Описать готовый код в виде функции, принимающей текстовый файл и возвращающей статистику (в виде списка "[]" или словаря "{}", как будет удобнее). С её помощью провести сравнение нескольких разных текстов (например, новостной статьи, научной статьи и какой-нибудь прозы).
4) Для собранных данных вывести графики зависимости количества слов от длины слова (может помочь библиотека matplotlib).

Как я поняла, начинать нужно примерно так:

Python
1
2
3
4
5
6
7
#!/usr/bin/python
#-*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import re
 
f=open("text.txt",'r', encoding="utf8") 
text=f.read()
Дальше мысль пропала....

Была идея удалить все символы кроме пробелов и букв, чтобы разбить текст на отдельные слова, но мне кажется, это совсем не то:

Python
1
2
3
4
5
s_words = []
for i in s:
    if i == " " or i.isalpha():
        s_words += [i]
s = "".join(s_words)

Буду рада любой помощи!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2018, 23:34
Ответы с готовыми решениями:

Как подписать комментарии и разобраться с работой кода? Дали задание разобраться и объяснить, а я совсем новичок
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

Очень странное хочу - хочу стать шпионом )))
Есть у меня китайская игрушка у которой на борту STM8S003F3P6 и рядом с ним примостился нонэйм...

Новичок, хочу собрать свой аппарат
Всем привет. Месяц назад начал изучать радиотехнику, схемотехнику. Пользовался различными...

Я новичок хочу создать сайт.Но с чего начать???
Добрый вечер,скажите пожалуйста с чего вообше начать что бы создать сайт. какие программы нужны для...

5
116 / 100 / 53
Регистрация: 13.04.2014
Сообщений: 233
16.03.2018, 00:05 2
Лучший ответ Сообщение было отмечено julymorningstar как решение

Решение

Python
1
2
3
4
5
6
>>> text = '''1)После открытия и прочтения файла требуется разбить текст на отдельные слова (именно слова, без знаков препинания).
2)Затем посчитать статистические данные: сколько в тексте слов длины 1, слов длины 2 и т.д. Статистику потребуется нормализовать, т.е. поделить количество слов в каждой категории на количество всех слов и выразить это отношение в процентах. После этого эти подсчитанные количества остаётся вывести на экран в порядке возрастания длин слов. 
3)Описать готовый код в виде функции, принимающей текстовый файл и возвращающей статистику (в виде списка "[]" или словаря "{}", как будет удобнее). С её помощью провести сравнение нескольких разных текстов (например, новостной статьи, научной статьи и какой-нибудь прозы).
4) Для собранных данных вывести графики зависимости количества слов от длины слова (может помочь библиотека matplotlib).'''
>>> re.findall(r'(?<=[\W])(\w+?)(?=[\W])', text)
['После', 'открытия', 'и', 'прочтения', 'файла', 'требуется', 'разбить', 'текст', 'на', 'отдельные', 'слова', 'именно', 'слова', 'без', 'знаков', 'препинания', '2', 'Затем', 'посчитать', 'статистические', 'данные', 'сколько', 'в', 'тексте', 'слов', 'длины', '1', 'слов', 'длины', '2', 'и', 'т', 'д', 'Статистику', 'потребуется', 'нормализовать', 'т', 'е', 'поделить', 'количество', 'слов', 'в', 'каждой', 'категории', 'на', 'количество', 'всех', 'слов', 'и', 'выразить', 'это', 'отношение', 'в', 'процентах', 'После', 'этого', 'эти', 'подсчитанные', 'количества', 'остаётся', 'вывести', 'на', 'экран', 'в', 'порядке', 'возрастания', 'длин', 'слов', '3', 'Описать', 'готовый', 'код', 'в', 'виде', 'функции', 'принимающей', 'текстовый', 'файл', 'и', 'возвращающей', 'статистику', 'в', 'виде', 'списка', 'или', 'словаря', 'как', 'будет', 'удобнее', 'С', 'её', 'помощью', 'провести', 'сравнение', 'нескольких', 'разных', 'текстов', 'например', 'новостной', 'статьи', 'научной', 'статьи', 'и', 'какой', 'нибудь', 'прозы', '4', 'Для', 'собранных', 'данных', 'вывести', 'графики', 'зависимости', 'количества', 'слов', 'от', 'длины', 'слова', 'может', 'помочь', 'библиотека', 'matplotlib']
Добавлено через 3 минуты
Python
1
2
3
4
from collections import Counter
>>> lst = re.findall(r'(?<=[\W])(\w+?)(?=[\W])', text)
>>> Counter(len(s) for s in lst)
Counter({1: 21, 5: 17, 7: 14, 6: 12, 9: 11, 4: 11, 10: 10, 3: 7, 8: 6, 2: 5, 11: 4, 12: 2, 14: 1, 13: 1})
Здесь первое значение - длина слова, второе - частота использования.
1
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 2
16.03.2018, 00:09  [ТС] 3
Спасибо большое за ответ!!!
0
Эксперт Python
5395 / 3819 / 1213
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
16.03.2018, 01:14 4
orAnd,
r'(?<=[\W])(\w+?)(?=[\W])' => r'\b(\w+?)\b'
Работает по тому же принципу, но находит на 1 потерянный токен больше.
1
116 / 100 / 53
Регистрация: 13.04.2014
Сообщений: 233
16.03.2018, 10:25 5
Garry Galler, спасибо за совет, я тоже только учусь.
Ещё, возможно надо произвести последующую фильтрацию полученного списка от слов типа '123', 'т', 'д', 'е' (если, конечно такие не нужны). Или заменить '\w' на группу типа '[А-Яа-я]'(это спасёт только от цифр)
0
776 / 578 / 229
Регистрация: 10.12.2016
Сообщений: 1,435
16.03.2018, 21:27 6
orAnd, замените на
Python
1
re.sub(r'[^А-Яа-я ]+','',text)
останутся буквы и пробелы. но тут нужен лексический анализ, чтобы фильтровать слова типа т.д/т.е. это регулярками не отфильтруешь.

Добавлено через 2 минуты
как вариант составить список исключений
Python
1
deprecated_words=['т.е.','т.д']# etc...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2018, 21:27
Помогаю со студенческими работами здесь

Работа с TDbf в Lazarus. Я очень новичок...
В общем, друзья, есть некоторые затруднения при работе с БД. Работаю в Lazarus, компонент TDbf....

Новичок. Помогите разобраться с листами Exсel
Доброго времени суток комрады! Никогда не работал с VBA, в основном прогал на Delphi, в основном...

Я новичок хочу стать програмистом с какова язика лучше начинать и вобще
Скажите с чиво начинать, мне 14 лет но я коешто знаю, но незнаю какой язик лучше всево изучать...

Нужно совместить два скрипта (я новичок, не могу разобраться)
Есть скрипт, спавнящий в рандомных местах заданной области определённые объекты с определённой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru