Подсчет слов в тексте.

LiMe

Client
Регистрация
10.12.2015
Сообщения
621
Благодарностей
341
Баллы
63
Парни, подскажите пожалуйста, как можно организовать подсчет слов в тексте. К примеру есть какой текст на 20.000 слов, и нужно посчитать какие слова, какое количество раз встречаются в тексте. Ибо посидел подумал, идей нет вообще. Заранее благодарен.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 562
Благодарностей
9 177
Баллы
113
Парни, подскажите пожалуйста, как можно организовать подсчет слов в тексте. К примеру есть какой текст на 20.000 слов, и нужно посчитать какие слова, какое количество раз встречаются в тексте. Ибо посидел подумал, идей нет вообще. Заранее благодарен.
Как вариант, поместить текст в список с разбиением по словам, почистить его на дубли, брать строку с удалением и брать по ней подсписок и считать кол-во строк.
 
  • Спасибо
Реакции: Alexmd и LiMe

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
Вот грубый пример того, как подсчитать слова. Однако, конечно, нужно поработать над очисткой текста от знаков препинания, слогов, если надо, может, стоило бы оставлять числа.
C#:
project.Variables["text"].Value//переменная с текстом
    .ToLower().Split(' ')
    .Where(x => !string.IsNullOrWhiteSpace(x))
    .Select(x => string.Join("", x.Where(c => char.IsLetter(c))))//тут происходит очистка от всего, что не является буквами
    .GroupBy(x => x)
    .OrderByDescending(x=>x.Count()).ToList()
    .ForEach(x => {
        project.Lists["list"].Add($"{x.Key}: {x.Count()}");//добавить в список проекта
        project.SendInfoToLog($"{x.Key}: {x.Count()}");//попялиться в лог
    });
 
  • Спасибо
Реакции: LiMe и Sergodjan

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 737
Благодарностей
1 131
Баллы
113
может так?

C#:
string inputText = "Парни, подскажите пожалуйста, как можно организовать подсчет слов в тексте.";
string[] words = inputText.Split(' ');

int count = words.Length;
project.Variables["count"].Value = Convert.ToString(count);
 
  • Спасибо
Реакции: LiMe

Rimen

Client
Регистрация
28.10.2019
Сообщения
406
Благодарностей
254
Баллы
63
Как вариант:


C#:
string text = "..."; // текст для подсчета слов
Dictionary<string, int> wordsCount = new Dictionary<string, int>();

foreach (string word in text.Split(new[] { ' ', '.', ',', '!', '?', ':', ';' }, StringSplitOptions.RemoveEmptyEntries))
{
    if (wordsCount.ContainsKey(word))
    {
        wordsCount[word]++;
    }
    else
    {
        wordsCount[word] = 1;
    }
}
text.Split(new[] { ' ', '.', ',', '!', '?', ':', ';' }, StringSplitOptions.RemoveEmptyEntries) разбивает текст на отдельные слова по знакам препинания, а wordsCount хранит пары "слово - количество вхождений".
 
  • Спасибо
Реакции: LiMe

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)