2010-07-19 46 views
2

我有文本文件。在这我想删除重复的单词。我的文本文件包含像如何使用java删除重复的单词

我删除重复的单词。但是结束'ப்','த்'的单词被认为是单独的单词,不能作为重复单词去除。如果我删除'ப்','த்',它会从其他字词中删除,如பாப்பா,சத்தம்。请提前使用java.Thanks提出解决此问题的任何想法。

+0

我能得到它的权利,(至少),有时话结束于“ப்”和“த்”相等? – 2010-07-19 09:32:09

回答

3

我想我会用一个自定义comperator一个集(如TreeSet)。这样你可以任何你喜欢的方式定义等于。

1

使用扫描仪中的每一行作为一个字符串进行扫描成一组,然后写入字符串在集合到一个文件中。

1

首先,你应该解释一下你如何解析您的文件,因为它似乎是你的tokenization没有适当工作。然后,在我看来,明显的建议,为unduplication查询是使用Set(甚至TreeSet),这要根据给定的规则contains确保您的元素的唯一性。

2

我不明白给定的语言(谷歌翻译的猜测是泰米尔语),但是从我读到的问题来看,对于用该语言编写的单词来说,“平等”有特殊的规则 - 就像文字可以相等他们的写法不同(例如结尾不同)。

所以,你可能想包装包含特殊对象的语言,你可以定义自定义的词串“等于”方法,就像这样:

public class TamilWord { 

    String writtenWord = null; 

    public TamilWord(String writtenWord) { 
    this.writtenWord = writtenWord; 
    } 

    public String getWrittenWord() { 
    return writtenWord; 
    } 

    @Overwrite 
    public boolean equals(Object other) { 

    // Define your custom rules here, so that two words that 
    // are written differently may be considered as equal   

    } 
} 

然后你就可以对所有分析创建TamilWord对象串并将它们放入 a Set。因此,如果我们有字abcdabcD这是在写作不同,但据认为是平等的规则,只有其中的一个将被添加到组。

+0

我不知道泰米尔人是不是......但是,也许表演某种词干?类似英语:已播放,正在播放将所有地图播放到播放或类似的东西。 – 2010-07-19 12:27:38

0

我的方式来解决这个问题:通过词

读单词,把它java.util.Set<TheWord>。最后,你将有没有重复的设置。你也应该定义TheWord类:

class TheWord { 
    String word; 

    public TheWord() {} 

    public String getWord() { 
    return word; 
    } 

    public void setWord(String word) { 
    this.word = word; 
    } 

    public boolean equals(TheWord o) { 
    // put here your specific way to compare words 
    // taking into account your language rules and considerations 
    } 
}