2009-11-29 8 views
2

Я использую инструментарий для анализа Parsing в Stanford NLP. Учитывая слово в лексиконе, как я могу найти его частоту *? Или, учитывая частотный ранг, как я могу определить соответствующее слово?Java Stanford 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

+0

Я хочу получить оценку чей-то словарного запаса, посмотрев на лексическую частоту использования слов. –

ответ

1

Если вы только подсчет частоты слов, предложение синтаксического анализа не требуется. Все, что вам нужно сделать, это tokenise вход, а затем подсчет частот слов с помощью java HashMap. Если вы хотите использовать инструменты Стэнфорда, используйте любой из токенов в edu.stanford.nlp.process.

Это дает вам частоту любого данного слова, но в целом может оказаться невозможным найти слово, соответствующее данному рангу частоты, поскольку некоторые слова могут быть одинаково частыми в документе.

+0

интерфейс Lexicon кажется ему полезным, но как его заполнить? –

+0

Возможно, это не полезно для ваших нужд, вы можете быть введены в заблуждение по имени. Лексикон - это подкомпонент парсера, который «обеспечивает (и) условную вероятность P (слово | тег)». Лексикон не предназначен для подсчета частот слов. – Stompchicken

+0

Я не занимаюсь подсчетом слов в тексте, а во всем корпусе. (так что «это» будет более частым словом, чем «pumpernickel») –

0

Это проблема с IR (поиск информации) больше, чем НЛП. Для этой задачи нужно посмотреть библиотеки, например Lucene.