从java中的文本文件中提取短语

问题描述:

我正在做基于主机的入侵检测项目,使用ADFA-LD数据集,现在我正在做特征提取模块。我构建了包含长度为4的系统调用短语的短语字典。现在为了提取特征,我需要将这些短语与新系统调用跟踪(以下是一些示例)进行比较(以下是一些示例):从java中的文本文件中提取短语

sys_clock_gettime sys_poll sys_poll sys_clock_gettime sys_poll sys_poll sys_poll sys_clock_gettime sys_poll sys_clock_gettime sys_poll sys_poll sys_poll sys_poll sys_poll sys_poll sys_poll sys_poll sys_socketcall .......

我需要的是什么,我怎么能比较这些短语与新的痕迹。我正在用java做。

我的短语词典:

sys_socketcall-sys_poll-sys_clock_gettime-sys_poll

sys_clock_gettime-sys_poll-sys_poll-sys_socketcall

sys_poll-sys_socketcall-sys_poll-sys_clock_gettime

sys_poll-sys_clock_gettime-sys_clock_gettime -sys_clock_gettime

sys_clock_gettime-sys_clock_ge TTIME-sys_socketcall-sys_clock_gettime

sys_socketcall-sys_clock_gettime-sys_poll-sys_poll

sys_poll-sys_poll

我使用 ' - ' 作为比较这些短语与新的痕迹分离器,所以我加入了独特的系统以' - '呼叫。

+1

显示我们到目前为止你已经尝试过的东西。如果您遇到困难,我们会尽力提供帮助。 – icza 2014-10-08 07:03:28

+0

问题根本不显示。 -1 – zubergu 2014-10-08 07:03:42

+0

你能否澄清一下你的长度标准是什么?所有示例字符串的长度都大于4,这意味着所有字符串都被选中了吗? – MrHug 2014-10-08 07:03:46

看起来好像你想要的单词被空格分开。在这种情况下,只需逐行读取文件,然后使用String.split(" ")来获取您的文字。 这里是一个我可能会想到:

public class FileSplitter { 

    public static void main(String[] args) throws IOException { 
     File file = new File("input_file.txt"); 
     LinkedList<String> words = new LinkedList<String>(); 
     int i = 0; 

     Files.lines(file.toPath()). 
     forEachOrdered(line -> words. 
       addAll(Arrays.asList(line.split(" ")))); 

     for(String word:words){ 
      if(word.trim().length() > 0){ 
       System.out.print(word.trim() + " "); 
       if(i++ >= 3){ 
        System.out.println(); 
        i = 0; 
       } 
      } 
     } 
    } 
} 

对于示例它返回:

sys_clock_gettime sys_poll sys_poll sys_clock_gettime 
sys_poll sys_poll sys_poll sys_clock_gettime 
sys_poll sys_clock_gettime sys_poll sys_poll 
sys_poll sys_poll sys_poll sys_poll 
sys_poll sys_poll sys_socketcall 
+0

这是Java 8用法的示例。 'line'这里是一个与'String'分开的文件行。 – 2014-10-08 11:29:11

+0

我不太明白你需要什么,但我相信你可以用'String.split()'从文件中提取所需的项目,然后统计你想要的任何数量 - 符号,单词或其他任何东西。祝你好运 – 2014-10-09 06:34:38