Hellow Stack Overflow людей. Я хотел бы получить некоторые предложения по поводу следующей проблемы. Я использую Java.
У меня есть массив # 1 с количеством строк. Например, две строки могут быть: «Яблоко упало на голову Ньютона» и «Яблоки растут на деревьях».
С другой стороны, у меня есть еще один массив # 2 с такими терминами, как (Fruits => Apple, Orange, Peach; Items => Pen, Book; ...). Я бы назвал этот массив моим «словарем».
Сравнивая элементы из одного массива с другим, мне нужно увидеть, в какую "категорию" попадают элементы из # 1 из # 2. Например. Оба из № 1 подпадают под "Фрукты".
Мое самое важное соображение - это скорость. Мне нужно сделать эти операции быстро. Хорошо бы иметь структуру, обеспечивающую постоянный поиск по времени.
Я рассмотрел Hashset с методом contains (), но он не допускает подстроки. Я также попытался запустить регулярное выражение типа (apple | orange | peach | ... и т. Д.) С включенным флагом нечувствительности к регистру, но я читал, что это не будет быстрым, когда число членов увеличится (ожидается минимум 200). Наконец, я искал и рассматриваю возможность использования ArrayList с indexOf (), но я не знаю о его производительности. Мне также нужно знать, какой из терминов действительно соответствует, поэтому в данном случае это будет «Apple».
Просьба высказать свои мнения, идеи и предложения по этой проблеме.
Я видел алгоритм Aho-Corasick, но ключевые слова / термины очень часто меняются. Так что я не думаю, что смогу это использовать. О, я не эксперт в области интеллектуального анализа текста и математики, поэтому, пожалуйста, уточните сложные понятия.
Спасибо, люди, переполняющие стек, за ваше время! :)