Какие шаги предварительной обработки необходимо предпринять перед передачей текста в Stanford NER tagger?

Первоначально я выполнял шаги предварительной обработки, такие как удаление стоп-слов, удаление HTML, удаление знаков препинания. Однако, когда я этого не делаю, кажется, что NER работает лучше. Может ли кто-нибудь сказать мне, какие шаги предварительной обработки нужно выполнить?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
280
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Единственное, что нужно StanfordNER, - это чистый текст, я имею в виду чистый, без HTML или каких-либо других мета-тегов документа. Также не следует удалять стоп-слова, они могут быть полезны модели при принятии решения о том, какой ярлык дать определенному слову.

Просто получите файл с чистым текстом:

echo "Switzerland, Davos 2018: Soros accuses Trump of wanting a 'mafia state' and blasts social media." > test_file.txt

Затем вы вызовете stanford-ner.jar, передайте ему обученную модель, например classifiers/english.all.3class.distsim.crf.ser.gz и входной файл, например: test_file.txt

Нравится:

java -cp stanford-ner-2017-06-09/stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier classifiers/english.all.3class.distsim.crf.ser.gz -textFile test_file.txt -outputFormat inlineXML

Это должно вывести что-то вроде этого:

Switzerland LOCATION
,   O
Davos   PERSON
2018    O
:   O
Soros   PERSON
accuses O
Trump   PERSON
of  O
wanting O
a   O
`   O
mafia   O
state   O
'   O
and O
blasts  O
social  O
media   O
.   O

Как видите, вам даже не нужно обрабатывать токенизацию (например, находить каждый уникальный токен / слово в предложении). StanfordNER сделает это за вас.

Еще одна полезная функция - настроить StanfordNER как веб-сервис:

java -mx2g -cp stanford-ner-2017-06-09/stanford-ner.jar edu.stanford.nlp.ie.NERServer -loadClassifier my_model.ser.gz -textFile -port 9191 -outputFormat inlineXML

Затем вы можете просто telnet или POST предложение, чтобы вернуть его тегом:

telnet 127.0.0.1 9191
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Switzerland, Davos 2018: Soros accuses Trump of wanting a 'mafia state' and blasts social media.

<LOCATION>Switzerland</LOCATION>, <PERSON>Davos</PERSON> 2018: <PERSON>Soros</PERSON> accuses <PERSON>Trump</PERSON> of wanting a 'mafia state' and blasts social media.

Connection closed by foreign host.

Другие вопросы по теме