Я получаю следующую ошибку:
Исправляемая фатальная ошибка: аргумент 1, передаваемый в CorenlpAdapter :: getOutput (), должен быть экземпляром строки, данной строки, вызываемой в /Library/WebServer/Documents/website/php-stanford-corenlp-adapter/index.php в строке 22 и определено в /Library/WebServer/Documents/website/php-stanford-corenlp-adapter/src/CoreNLP/CorenlpAdapter.php в строке 95
index.php 21 и 22 содержат:
$text1 = 'I will meet Mary in New York at 10pm';
$coreNLP->getOutput($text1);
Строки corenlpAdapter.php 95 и далее содержат:
public function getOutput(string $text){
if(ONLINE_API){
// run the text through the public API
$this->getServerOutputOnline($text);
} else{
// run the text through Java CoreNLP
$this->getServerOutput($text);
}
// cache result
$this->serverMemory[] = $this->serverOutput;
if(empty($this->serverOutput)){
echo '** ERROR: No output from the CoreNLP Server **<br />
- Check if the CoreNLP server is running. Start the CoreNLP server if necessary<br />
- Check if the port you are using (probably port 9000) is not blocked by another program<br />';
die;
}
/**
* create trees
*/
$sentences = $this->serverOutput['sentences'];
foreach($this->serverOutput['sentences'] as $sentence){
$tree = $this->getTreeWithTokens($sentence); // gets one tree
$this->trees[] = $tree; // collect all trees
}
/**
* add OpenIE data
*/
$this->addOpenIE();
// to get the trees just call $coreNLP->trees in the main program
return;
}
Почему именно я получаю эту ошибку, когда text1 является строкой?
Я оригинальный автор этого класса. Как видите, функция getOutput выглядит следующим образом:
public function getOutput(string $text){
...
}
Измените это на:
public function getOutput($text){
...
}
Функция пытается установить, что ввод является строкой. Оригинальный код должен работать. Однако, похоже, что в вашем случае PHP думает, что «строка» на самом деле не является строкой. Может быть, используемая вами среда кодирования (IDE) использует неправильный набор символов? Или, может быть, вы скопировали код из HTML в IDE или что-то в этом роде. Таким образом, хотя на экране написано «строка», на самом деле это не строка для PHP.
Если вы уверены, что ввод является строкой, вы можете смело изменять код, как указано выше. Класс должен работать нормально.
public function getOutput($text){
.
.
.
}