-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Умный Словарь -- SmartDict.
Выучить английские слова и устойчивые выражения.
Выдать список предложений из литературы, в которых содержится запрос.
-
-
Индексатор(С++): получает на вход текст (тексты) и строит инвертированный индекс.
-
Парсер текста: выделение предложений и слов.
class TParser void SplitText(const string& text, vector<string>& sentences) const; void SplitSentence(const string& sentence, vector<string>& words) const; -
version 2.0 Предфильтр: выкидывает из индексируемого текста заведомо сложные предложения.
-
Хранение данных: два файла. Один находится в памяти --
map<word, block_id>. Второй -- на диске, состоит из блоков. Блок -- набор предложений.class TIndexer bool IndexSentence(const string& word, const string& sentence); bool LoadFromDisk(); bool SaveToDisk(); -
version 2.0 Морфология: приведение слов к нормальной форме.
/* Example: going -> go, chairs -> chair */ class TLemmer void GetLemma(const string& word, string& lemma);
-
-
Поиск(С++): получает слово -- возвращает блок.
class TSearcher bool InitIndex(const string& indexFile); void Find(const string& word, vector<string>& sentences) const;version 2.0 Получает набор слов. Тогда надо пересекать блоки. Для этого надо хранить каждый блок сортированным.
void FindPhrase(const string& phrase, vector<string>& sentences) const; -
Библиотека для ранжирования(С++): вычисляет сложность слов и сложность предложений.
- Заранее обработать корпус текстов для получения частотностей слов. (Python)
- На основе частотностей слов, написать библиотеку, которая будет вычислять сложность слова и сложность предложения.
class TRanker double GetWordDifficulty(const string& word) const; double GetSentenceDifficulty(const string& sentence) const; -
Веб-сервер, предоставляющий API поиска.
-
-
- Для начала будет очень простым -- поисковая строка и результаты.