захват английских слов

У меня есть большой текстовый файл, который содержит много английских слов. Однако он также содержит немецкие и французские слова. Мне нужно захватить все английские слова в нем.

Я считаю, во-первых, я читаю весь файл с диска и преобразовываю его в массив, во-вторых, я сопоставляю все слова со словарем английского слова unix, например здесь, но это не очень хорошее решение из-за размера каждого файла. Если я сделаю это таким образом, сложность будет высокой, а я этого не хочу.

У вас есть идеи, как я могу сделать это с Ruby простым способом?


person ndrx42    schedule 04.04.2013    source источник


Ответы (1)


Первое, что вы можете сделать, это поместить английский словарь в set (вместо массива). Таким образом, поиск выполняется за O(1), а общая сложность составляет O(N) вместо O(NxM).

person Sergio Tulentsev    schedule 04.04.2013
comment
из любопытства какие факторы заставили вас предложить Set? - person Arup Rakshit; 04.04.2013
comment
O(1) поиск. Может быть хэшем или набором. - person Sergio Tulentsev; 04.04.2013
comment
но мне нужно проверить все элементы массива один за другим. Есть ли какой-нибудь драгоценный камень, похожий на зачарование питона? - person ndrx42; 04.04.2013
comment
Итак, что в этом плохого? Разве вам не нужно делать то же самое с любой другой библиотекой? - person Sergio Tulentsev; 04.04.2013