Tagging Полное имя в Стэнфордском NER

Я пытаюсь пометить полное имя как полный тег (один человек) вместо отдельных тегов. Вот пример.

http://nlp.stanford.edu:8080/ner/process (Стэнфордский NER онлайн)

Пример предложения: Мухаммед Али был великим боксером. Самым большим конкурентом Али был Джо Фрейзер. Имя также может быть написано как М. Али и Дж. Фрейзер.

Это мой существующий код PHP`

$text = "Muhammad Ali was a great boxer. Ali's greatest rival was Joe Frazier. The name can also   be written as M. Ali and J. Frazier";

$pos = new \StanfordNLP\NERTagger(
'XPATH/NER/StanfordNLP/stanford-ner-2013-11-12/classifiers/english.conll.4class.distsim.crf.ser.gz',
'XPATH/NER/StanfordNLP/stanford-ner-2013-11-12/stanford-ner.jar'
);
$result = $pos->tag(explode(' ', " $text"));

foreach ($result as $eType)
{

if(!(strcmp($eType[1], 'PERSON')))
{
echo "Word ".$eType[0]." of Stanford entity type PERSON</br>";
}
}`

2

Решение

Неважно, я смог решить это самостоятельно. По сути, я сосредоточился на объединении слов, если предыдущее слово было также человеком типа сущности. Это код, который я придумал

<?php
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
require "./php_aho_corasick-master/AhoCorasickPHP-master/AhoCorasick.php";
require "./php_aho_corasick-master/AhoCorasickPHP-master/TreeNodes.php";
include_once('AlchemyAPI/alchemyapi.php');
include_once('TextStatistics/TextStatistics.php');

require './NER/StanfordNLP/Base.php';
require './NER/StanfordNLP/Exception.php';
require './NER/StanfordNLP/Parser.php';
require './NER/StanfordNLP/StanfordTagger.php';
require './NER/StanfordNLP/NERTagger.php';
$text= "Muhammad Ali was a great boxer, Ali's greatest rival was Joe Frazier, The name can also be written as M. Ali and J. Frazier.";
$pos = new \StanfordNLP\NERTagger(
'C:/wamp/www/GoogleResultsParserTopK/NER/StanfordNLP/stanford-ner-2013-11-12/classifiers/english.conll.4class.distsim.crf.ser.gz',
'C:/wamp/www/GoogleResultsParserTopK/NER/StanfordNLP/stanford-ner-2013-11-12/stanford-ner.jar'
);
$a="Answer not found";
//$pos->setJavaPath('C:/Program Files/Java/jdk1.7.0_45/bin');
$result = $pos->tag(explode(' ', " $text"));

var_dump($result);$previousValue="";
$previousType="";
$FullName="";
$i=0;
foreach ($result as $eType) {

echo $i." ".$FullName."</br>";
$i++;
if(!(strcmp($eType[1], 'PERSON')))
{
if(!(strcmp($previousType, 'PERSON')) && !(strcmp($FullName, "")))
{
$FullName=$previousValue." ".$eType[0];
}
else if(!(strcmp($previousType, 'PERSON')) && (strcmp($FullName, "")))
{
$FullName=$FullName." ".$eType[0];
}
else if(!(strcmp($a, "Answer not found")) && !(strcmp($FullName, "")))
$FullName=$eType[0];
else if((strcmp($FullName, "")))
$FullName=$FullName." or ".$eType[0];}

$previousValue=$eType[0];
$previousType=$eType[1];
}
echo $FullName;

?>

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]