Как избежать пунктуации во время токенизации с помощью Stanford NLP

Я использую стандфордское ядро ​​НЛП. Я пробовал следующий пример. этот пример может размечать слова из текста. Однако он также извлекает знаки препинания, такие как запятая, точка и т. д. Мне было интересно, как установить свойства, которые позволяют не извлекать знаки препинания, или, альтернативно, есть ли другой способ сделать то же самое. Вот пример кода. Я знаю, что легко использовать Python, но не знаю, как это сделать на Java. Пожалуйста, предложите.

    props = new Properties();
    props.setProperty("annotators", "tokenize, ssplit");
    pipeline = new StanfordCoreNLP(props);
    String text = "this is simple text written in English,Spanish etc."

// create an empty Annotation just with the given text
    Annotation document = new Annotation(text);

   pipeline.annotate(document);

   List<CoreMap> sentences = document.get(SentencesAnnotation.class);

   for(CoreMap sentence: sentences) {
     for (CoreLabel token: sentence.get(TokensAnnotation.class)) {
    // this is the text of the token
    String word = token.get(TextAnnotation.class);
      }
   }

person Nhqazi    schedule 15.03.2015    source источник


Ответы (1)


У нас нет опции токенизатора, чтобы пропустить их, но это не должно быть сложно. Пунктуационные строки являются закрытым классом.

Вы можете сопоставлять токены, которые являются знаками препинания, используя регулярное выражение. (Используйте \p{Punct}; см., например, Регулярное выражение пунктуации в Java). Затем просто отбрасывайте токены, текстовое содержимое которых соответствует такому регулярному выражению.

person Jon Gauthier    schedule 15.03.2015
comment
спасибо, а что со стоп-словами, как отбросить стоп-слова, они тоже не доступны как опции? - person Nhqazi; 15.03.2015
comment
Они не доступны в качестве стандартной функции, потому что определение стоп-слова не очень конкретное / зависит от задачи. Вы можете создать свой собственный список стоп-слов или найти его в Интернете и вручную отфильтровать маркеры стоп-слов так же, как вы делаете маркеры пунктуации. - person Jon Gauthier; 15.03.2015