Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将自然文本解析为数组_Java_String_Parsing - Fatal编程技术网

Java 将自然文本解析为数组

Java 将自然文本解析为数组,java,string,parsing,Java,String,Parsing,如何解析自然字符串,如下所示: “10米” “55m” 进入此类的实例: public class Units { public String name; //will be "meters" public int howMuch; //will be 10 or 55 } 另外,我想用NLP库来做这件事,我真的是NLP的noob,很抱歉我的英语不好,这是可能的,但我建议你不要这样做。数组通常只保存一种类型的数据结构,因此不能同时保存int和string。如果您这样做了,则必须

如何解析自然字符串,如下所示:

“10米”

“55m”

进入此类的实例:

public class Units {
    public String name; //will be "meters"
    public int howMuch; //will be 10 or 55
}

另外,我想用NLP库来做这件事,我真的是NLP的noob,很抱歉我的英语不好,这是可能的,但我建议你不要这样做。数组通常只保存一种类型的数据结构,因此不能同时保存int和string。如果您这样做了,则必须执行
Object[][]

您可以使用以下算法:

  • 通过循环遍历每个字符并在每次遇到空格时断开一个新词,将文本分隔为单词:这可以存储在字符串数组中。确保每个单词都以小写形式存储
  • 将二维字符串数组存储为要识别的所有单位的数据库:这可以通过表示一个单位的每个子数组及其所有等效表示来实现:例如,米的子数组可能看起来像{“meter”、“meters”、“m”}
  • 制作两个平行的数组列表:第一个表示所有数值,第二个表示相应的单位
  • 循环浏览步骤1中的单词列表:对于每个单词,检查其格式是否为nubmer+unit(无相邻空格)。如果是这样,那么将数字拆分并放入第一个ArrayList。然后,通过参考二维字符串数组(这应该是子数组的第一个索引),找到与文本中给出的缩写单位相对应的未缩写单位。将此单元添加到第二个ArrayList。最后,如果单词是单个数字,检查下一个单词是否与任何单元对应;如果是,则查找其未命名的单元(子数组的第一个索引)。然后将数字及其单位添加到各自的ArrayList中

  • 当然可以,它只是一个对象数组,即
    Object[][]
    。不好,不推荐,但可能我的意思是,它可以是我的类,或者其他的,我需要精确解析解决方案,你确定要这样做吗?听起来很难听还有什么需要解析的吗,还是只需要“数字”+“米”?为什么你需要数组是那种格式,它是强制性的吗?把自然语言转换成带有单位的计算机表示形式,这是非常复杂的。找一个图书馆为你做这件事。你的期望在我看来是不一致的。。。我希望ans也能回答10米和55米,或者10米和55米…@ifly6真的吗?如果只是像这样简单的格式,这可以很容易地实现。如果它变得更丰富,是的,这会变得很困难,但我不认为OPBut是这样的,但是,如果字符串是两个单词呢?比如“20米”。使用RegExp不是更好吗?它仍然可以处理这样的字符串