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;
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.
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/>";
}
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 :)