0

我需要读入一个包含 2 个句子的文件来比较并返回一个 0 和 1 之间的数字。如果句子完全相同,它应该返回 1 表示真,如果它们完全相反,它应该返回 0 表示假。如果句子相似,但单词被更改为同义词或类似的东西,它应该返回 .25 .5 或 .75。文本文件的格式如下:

______________________________________
文本:示例

文本 1:那是一个黑暗而暴风雨的夜晚。我一个人坐在红色的椅子上。我并不孤单,因为我养了三只猫。

文本 20:那是一个阴暗的暴风雨之夜。我一个人坐在深红色的椅子上。我并不完全孤单,因为我有三只猫科动物
// 应该得分高点但不是 1

文本 21:那是一个阴暗而暴风雨的夜晚。我一个人坐在深红色的大教堂上。我并不完全孤单,因为我有三只猫科动物
// 应该低于 text20

文本 22:我一个人坐在深红色的大教堂上。我并不完全孤单,因为我有三只猫科动物。这是一个阴暗而暴风雨的夜晚。
// 得分应该低于 text21 但不是 0

文本 24:那是一个黑暗而暴风雨的夜晚。我并不孤单。我没有坐在红色的椅子上。我养了三只猫。
// 应该得 0 分!
________________________________________________

我有一个文件阅读器,但我不确定存储每一行​​的最佳方式,以便我可以比较它们。现在我正在读取文件,然后在屏幕上打印出来。存储这些然后比较它们以获得我想要的数字的最佳方法是什么?

import java.io.*;

public class implement 
{


    public static void main(String[] args)
    {
        try
        {
            FileInputStream fstream = new FileInputStream("textfile.txt");

            DataInputStream in = new  DataInputStream (fstream);
            BufferedReader br = new BufferedReader (new InputStreamReader(in));
            String strLine;

            while ((strLine = br.readLine()) != null)
            {
                System.out.println (strLine);
            }

            in.close();
        }

        catch (Exception e)
        {
            System.err.println("Error: " + e.getMessage());
        }

    }

}
4

1 回答 1

1

将它们保存在数组列表中。

ArrayList list = new ArrayList();
//Read File
//While loop
list.add(strLine)

要检查句子中的每个变量,只需删除标点符号,然后用空格分隔并搜索要比较的句子中的每个单词。我建议忽略单词或 2 或 3 个字符。这取决于你的题外话

然后将这些行保存到数组中并根据需要进行比较。要比较相似的单词,您需要一个数据库来有效地检查单词。又名哈希表。一旦你有了这个,你可以半快速地在数据库中搜索单词。接下来,这个作品哈希表将需要一个词库链接到每个词的相似词。然后为每个句子中的关键词取相似的词,并在您要比较的句子上搜索这些词。显然,在搜索相似词之前,您需要比较两个实际句子。最后,您将需要一个高级数据结构,您必须建立自己来做更多的事情,而不仅仅是直接比较。

于 2012-04-27T14:17:05.327 回答