2009-11-29 99 views
2

我正在使用斯坦福大學NLP分析工具包。鑑於詞典中的一個詞,我怎麼能找到它的頻率*?或者,給定一個頻率等級,我怎樣才能確定相應的單詞?Java斯坦福大學NLP:查找單詞頻率?

*在整個語言中,而不僅僅是文本示例。

這是我使用的工具的演示:

class ParserDemo { 
    public static void main(String[] args) { 
    LexicalizedParser lp = new LexicalizedParser("englishPCFG.ser.gz"); 
    lp.setOptionFlags(new String[]{"-maxLength", "80", "-retainTmpSubcategories"}); 

    String[] sent = { "Sincerity", "may", "frighten", "the", "boy", "." }; 
    Tree parse = (Tree) lp.apply(Arrays.asList(sent)); 
    parse.pennPrint(); 
    System.out.println(); 

    TreebankLanguagePack tlp = new PennTreebankLanguagePack(); 
    GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory(); 
    GrammaticalStructure gs = gsf.newGrammaticalStructure(parse); 
    Collection tdl = gs.typedDependenciesCollapsed(); 
    System.out.println(tdl); 
    System.out.println(); 

    TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed"); 
    tp.printTree(parse); 
    } 

} 
+0

我不認爲我理解這個問題。這是什麼現象單詞的頻率與解析呢? – Stompchicken 2009-11-30 10:28:33

+0

我想通過查看詞語的詞彙頻率來衡量某人的詞彙量。 – 2009-12-01 01:31:43

回答

1

如果只統計詞頻,句子解析是不必要的。所有你需要做的是tokenise輸入,然後使用java HashMap來計數字頻率。如果您想使用斯坦福工具,請使用edu.stanford.nlp.process中的任何標記器。

這給你任何給定詞的出現次數,但一般可能無法找到對應於給定頻率等級的詞,因爲有些話可能是在文檔中同樣頻繁。

+0

的詞彙接口好像它可能是有用的,但我怎麼用數據填充呢? – 2009-12-02 14:45:03

+0

它可能不是您的需求是有用的,你可能會得到由名稱所誤導。詞典是「提供條件概率P(詞|標籤)」的解析器的子組件。詞典不是用來計算詞頻的。 – Stompchicken 2009-12-04 16:12:57

+0

我不關心在文本樣本中統計詞頻,而是在整個語料庫中統計詞頻。 (所以「這個」比「裸啤酒」更頻繁) – 2009-12-05 21:06:15

0

這是一個超過NLP的IR(信息檢索)問題。對於這項任務,您應該查看庫如Lucene