我有产品评论的数据集,我想在该文件的文本和打印之间提取文本。如何提取数据? 文件包含以下格式的数据
<review> id
<reviewer></reviewer>
<start word></end word>
</review>
我的代码就像
File file = new File("D://Data/Dataset/unlabeled.review");
FileInputStream fis = new FileInputStream(file);
byte[] bytes = new byte[(int) file.length()];
fis.read(bytes);
fis.close();
String text = new String(bytes, "UTF-8");
System.out.println(text.substring(text.indexOf("<start word>"), text.lastIndexOf("</end word>")));
答案 0 :(得分:1)
您的提取代码是:
text.substring(text.indexOf("<review_text>"),
text.lastIndexOf("</review_text>"));
此代码存在三个问题:
indexOf
和lastIndexOf
方法返回某些参数字符串出现的第一个字符的偏移量。但是你需要从之后的第一个字符中提取“”。
如果有多个"<review_text>"
/ "</review_text>"
对,则您的代码不会提取每对之间的文本。
如果没有"<review_text>"
或没有"</review_text>"
,则一个或两个调用索引将返回-1,这将导致{{1}中的异常调用。