从Android中的文本中提取关键字

时间:2018-05-16 22:36:59

标签: java android machine-learning sentiment-analysis

让我们说,用户正在EditText中键入文本。现在,当用户输入时,我想从这些文本中提取关键字。

例如,如果用户输入“我有头疼”。它应该提取“头痛”作为关键词。

请告诉我如何在Android中有效地执行此操作。

更新:我不知道关键字是什么。必须从用户输入的文本中提取它们。

2 个答案:

答案 0 :(得分:2)

首先,您应该定义您将视为关键字的内容。

一个。作为关键字的有限单词列表 或者b。 关键字的单词列表。

该列表可以位于代码中的ArrayList<String>

当用户更改EditText中的文本时(请参阅EditText.addTextChangedListener(new TextWatcher(){...}),您可以使用split()作为分隔符获取文本String [] space character。下一个搜索列表中数组中的每个单词(顶部的a或b选项)要么检查它们是否存在。当您点击时,您已找到用户输入的关键字。

结果关键字可以暂时保存在另一个ArrayList<String>中,供您在完成输入扫描后使用它们。

注意:我已经提出了一个ArrayList来保留列表,考虑到它不会是一个很长的列表。更复杂的情况下,列表可以保存在HashMap或TreeMap中,与@Deepakkaku评论的搜索更快。

答案 1 :(得分:1)

这个问题可以有两种方法:

  1. 对您感兴趣的关键字或非关键字进行硬编码。@ Juan的答案就是这里的方法。
  2. 第二个选项是使用一些机器学习模型,这是你正在看的,我猜你给机器学习标签。
  3. 选项1需要提前定义一组关键字,您认为在您的问题中没有这些关键字。所以这不适用于这种情况。所以这是选项2的解决方案。

    • 创建模型。
      • 您必须创建标记示例的数据集。
      • 您必须为整个数据集定义词汇表。
      • 您必须定义并训练模型。如果您有足够的数据,则可以从头开始。否则,建议使用转学习。例如,您可以在线查找NLP模型,如word2vec或情绪分析,并查找转移学习。 TF Hub可以轻松进行转学习。
    • 训练模型后,您必须锻炼如何转换该模型,以便在Android上高效运行以进行推理。您可以选择Tensorflow-lite,Caffe2等。如果您使用Tensorflow,建议您转换为Tensorflow Lite以进行推理以提高效率。
    • 您必须使用适当的运行时(TFLite,Caffe2等)构建您的Android应用程序并将模型捆绑在一起。如果您不想捆绑,可以使用ML Kit来处理下载。
    • 通过侦听EditText中的更改并调用模型推断,将钩子添加到活动中的模型中。您可能希望在第一次推断调用之前提前加载模型解释器以提高效率。