beste leden,

Ik probeer nu al een aantal uur te brainstormen hoe ik dit zou kunnen oplossen.

Wat ik graag wil doen is specifieke woorden wil opzoeken in een geposte commentaar.

Wellicht denk ik te hard en doe ik het veels te moeilijk.
$pcount moet in dit geval 3 aangeven (varieert natuurlijk kwa hoeveelheid tekst en $positief)
Op het momenten heb ik met PHP dit gemaakt.

<?php
function commentaarevalueren(){

$commentaar = 'goed ik lever positief en leuke commentaar op.';
$positief = 'positief leuke blij goed';
$positief=explode(' ',$positief);
$pcount = 0;

for($i=0;$i<count($positief);$i++) {
if(stripos($commentaar,$positief[$i]))
{
$pcount++;

}
else {
echo "fout in de code!";
}
}
echo "<br/>Aantal positieve woorden:" . $pcount;

}
?>
Aan de functie getDetectedWordsAmount geef je een tekst mee een een array met daarin de woorden die "gedetecteerd" moeten worden. De functie geeft het aantal woorden terug dat gedetecteerd is.

<?php
function getDetectedWordsAmount($text, array $words_to_detect){
$words_detected = 0;
foreach ($words_to_detect as $word) {
if (strpos($text, $word)) {
$words_detected++;
}
}
return $words_detected;
}

// Voorbeeld 1
$words_to_detect = array('koe', 'melk', 'baksteen');
$text = 'De koe in de wei geeft melk.';
echo 'Deze woorden moeten gedetecteerd worden:<br><strong>' . implode(' ', $words_to_detect) . '</strong><br><br>';
echo getDetectedWordsAmount($text, $words_to_detect) . ' van deze woorden komen voor in de tekst:<br><strong>' . $text . '</strong><br><br>';

// Voorbeeld 2
$words_to_detect = array('auto', 'fiets', 'vliegtuig', 'paard', 'hoefijzer');
$text = 'Het oude hoefijzer van het paard ligt in de schuur naast de fiets.';
echo 'Deze woorden moeten gedetecteerd worden:<br><strong>' . implode(' ', $words_to_detect) . '</strong><br><br>';
echo getDetectedWordsAmount($text, $words_to_detect) . ' van deze woorden komen voor in de tekst:<br><strong>' . $text . '</strong><br><br>';

?>

Het resultaat in je browser:

Deze woorden moeten gedetecteerd worden:
koe melk baksteen

2 van deze woorden komen voor in de tekst:
De koe in de wei geeft melk.

Deze woorden moeten gedetecteerd worden:
auto fiets vliegtuig paard hoefijzer

3 van deze woorden komen voor in de tekst:
Het oude hoefijzer van het paard ligt in de schuur naast de fiets.


De functie van Ozzie kan korter.

<?php

function getDetectedWordsAmount($text, array $words_to_detect){

return count(array_intersect($words_to_detect, str_word_count($text, 1)));
}

?>
geinig Mark :)
Dit is hem geworden uiteindelijk tekst word vanuit POST gehaald:
Domo arrigato!
<?php
function commentaarevalueren($commentaar, array $words_to_detect){
$words_detected = 0;

foreach ($words_to_detect as $word) {

if (strpos($commentaar, $word)) {
$words_detected++;
}
}
return $words_detected;
}

echo '<br/>Deze woorden worden herkent:<br/>';
echo 'goed positief best perfect slecht maar kan negatief <br/>';
echo '__________________________________________________________<br/>';

$commentaar = $_POST['commentaar'];

$words_to_detect = array('goed', 'goed', 'positief', 'best', 'perfect' );
echo '<br/>';
echo commentaarevalueren($commentaar, $words_to_detect) . ' van deze woorden zijn positief.<br/>';
$pcount = commentaarevalueren($commentaar, $words_to_detect);

$words_to_detect = array('slecht', 'maar', 'kan', 'negatief' );
$commentaar = $_POST['commentaar'];
echo commentaarevalueren($commentaar, $words_to_detect) . ' van deze woorden zijn negatief';
$ncount =commentaarevalueren($commentaar, $words_to_detect);

if($pcount > $ncount)
{
echo"<br/>Commentaar is positief:<br/>";

}
else
{
echo "<br/>Commentaar is negatief:<br/>";
}

?>
En wat nou als ik bijvoorbeeld zeg:

Dit is niet heel mooi maar dat vind ik niet erg.


Dan zal jou script zeggen dat het negatief is maar dat is het niet
Tuurlijk wel? want 'maar' is als negatief gedeclareerd?

alles wat in the array positief ziet wordt opgeteld. Mooi zit er niet tussen. Ik heb het gewoon zo kort mogelijk gehouden. Het gaat mij meer om dat ik specifieke woorden kan tellen :)

Reageren