Извлечение ключевых слов из текста в Android - PullRequest
0 голосов
/ 17 мая 2018

Допустим, пользователь печатает текст в EditText.Теперь, когда пользователь печатает, я хочу извлечь ключевые слова из этих текстов.

Например, если пользователь вводит - «У меня болит голова».Он должен выделять «головную боль» как ключевое слово.

Пожалуйста, дайте мне знать, как я могу сделать это эффективно в Android.


Обновление: я не знаю, что это за ключевые слова.Они должны быть извлечены из текста, который вводит пользователь.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Может быть два подхода к этой проблеме:

  1. Жесткое кодирование ключевых слов или не ключевых слов, которые вас интересуют. @ Ответ Хуана - это то, что нужно.
  2. Второй вариант - использование некоторой модели машинного обучения, на которую вы, наверное, обращаете внимание, учитывая ваш тег машинного обучения.

Вариант 1 требует заранее определенного набора ключевых слов, которых, как вы говорите, у вас нет в вашем вопросе. Так что это не сработает в таком случае. Итак, вот решение для Варианта 2.

  • Создать модель.
    • Вы должны создать набор данных с помеченными примерами.
    • Вы должны определить словарь для всего набора данных.
    • Вы должны определить и обучить модель. Если у вас достаточно данных, вы можете начать с нуля. В противном случае рекомендуется использовать трансферное обучение. Например, вы можете искать модели НЛП, такие как word2vec или анализ настроений в Интернете, и искать трансферное обучение. TF Hub облегчает передачу обучения.
  • После того, как вы обучили модель, вам нужно потренироваться, как преобразовать эту модель, чтобы она эффективно работала на Android для вывода. У вас есть выбор в Tensorflow-lite, Caffe2 и т. Д. Если вы используете Tensorflow, рекомендуется преобразовать его в Tensorflow Lite для определения эффективности.
  • Вы должны создать приложение для Android с соответствующей средой выполнения (TFLite, Caffe2 и т. Д.) И объединить модель. Вы можете использовать ML Kit, чтобы позаботиться о загрузке для себя, если не хотите связывать.
  • Добавьте хуки к модели в вашей деятельности, слушая изменения в вашем EditText и вызывая вывод модели. Скорее всего, вы хотите, чтобы интерпретатор модели загружался раньше времени, прежде чем первый вывод потребует эффективности.
0 голосов
/ 17 мая 2018

Прежде всего вы должны определить, что вы будете рассматривать в качестве ключевых слов.

а.Ограниченный список слов, которые являются ключевыми словами.
Или б.Ограниченный список слов, которые не являются ключевыми словами.

Этот список может быть в ArrayList<String> в вашем коде.

Когда пользователь изменяет текст вEditText (см. EditText.addTextChangedListener(new TextWatcher(){...}), вы получаете текст и split() его в String [], используя space character в качестве разделителя. Затем найдите каждое слово в массиве в вашем списке (опции a или b вверху) либо проверьтеесли они есть или нет. Когда вы получаете удар, вы нашли ключевое слово, введенное пользователем.

Полученные ключевые слова могут быть временно сохранены в другом ArrayList<String>, чтобы вы могли использовать их после завершения сканированиявходные данные.

Примечание: я предложил ArrayList, чтобы сохранить список, учитывая, что он не будет длинным списком. Для более сложных сценариев список можно сохранить в HashMap или TreeMap в строкахтого, что @Deepakkaku прокомментировал, чтобы поиск был быстрее.

...