2012-03-24 109 views
2

我正在嘗試編寫一個Java程序,用於查找文本文件中的字符串模式。 考慮以下文字,摘自一本小說:在文本中搜索字符串的模式

她是一個非常了不起的女人,他認爲。然後她說:「你好,我的名字是勞倫,你是什麼?」

我想找到一種方法來查找這個序列的任何出現:HELLO,任何字符串,NAME(從列表中),因此,從上面的例子中,我會得到):

他是個非常了不起的女人,他想。然後她說:「你好,我的名字是勞倫。你是什麼?」

起初我想過使用正則表達式,然後我考慮寫一個解析器(也許是一個JFlex或ANTRL生成一個)。

任何人都知道一個更容易,並希望更快的代碼解決方案?

回答

0

您可以嘗試使用stanford POS tagger來標記部分句子,然後使用您正在查找的標準獲取這些句子。

+0

謝謝。你的回答似乎與我的任務非常吻合。我將詳細研究stanford POS tagger。順便說一句,你有沒有用過它?如果是這樣,你有沒有創建一個自定義標記文件?再次感謝。 – Sibby 2012-03-25 20:00:49

+0

你不需要一個自定義的標記文件,我想..只是研究在標記器中使用的標記集合,並且你將能夠實現你想要的。例如,在你給出的例子中,你好會掉下來在一個特定的標籤下,名字將屬於專有名詞..研究標籤集,你應該做得很好..爲了進一步飽和你的搜索,嘗試使用模式和匹配器來使用特定的正則表達式模式來砸標籤。好運! – 2012-03-30 12:37:04

0

嘗試Lucene,Java搜索引擎。你需要能理解n-gram的東西。

2

我認爲使用Pattern類的正則表達式是最好的選擇,如果您只是試圖匹配HELLO(不區分大小寫),任何字符串,名稱(從列表中取)。

看一下在線RegEx評估器來構建您的表達式(如http://www.regular-expressions.info/javascriptexample.html)。它會花費你一些工作來構建表達式,但是一旦你做了,它將提供一個簡潔的方式來表達你的字符串搜索模式。