Как я могу эффективно маркировать текст? - PullRequest
0 голосов
/ 26 мая 2018

Учитывая текст (T) и словарь (D) , как я могу найти все слова, встречающиеся в тексте?

A1. Можно предположить, что в T имеется всего несколько повторений символов, например, T на китайском языке.

A2. Итерации по D , как можно подозревать, являются дорогостоящими.Таким образом, он должен быть предварительно обработан, разбит или просто: следует избегать многократных итераций.

A3. Верхняя длина слова равна L и сравнительно мала по сравнениюк тексту.

B1. Простейшим решением может быть просто перебрать D для каждой подстроки разумной длины, которую я имею в своем T .Этот метод определенно гарантирует мне, что все слова найдены.Это, однако, кажется крайне неэффективным.

B2. Другая идея состоит в том, чтобы выполнить итерацию по тексту один раз, извлечь все символы в T в наборе и продолжить как в B1 для поиска всех слов.

B3. Этот вариант может работать как B2 , однако будет использовать / утверждать, что D в лексикографическом порядке.Это означает, что на самом деле он будет проверять слова только с одинаковыми начальными символами.Возможно, я мог бы также использовать взгляд впереди символов, следующих за моим текущим персонажем T .Я бы перебрал D только один раз, T несколько раз.Это, однако, кажется терпимым.

B4. Здесь я бы также продолжил, как в B3 , однако переупорядочив D таким образом, что более вероятно встречающиеся слова T проверены ранее.Проблема здесь: как мне узнать, какие слова встречаются чаще?Я должен был бы сначала переварить намного больше данных заранее и быть уверенным, что то, что я затем измеряю, на самом деле то, что я хочу измерять ..

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

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