@ 2016-01-26T20:51:50Z <?php
class KlassifizierterText {
private $text;
private $klasse;
private $lexikonGroesse;
function __construct($paramText = null, $paramKlasse = null) {
if(!empty($paramText)) $this->setzeText($paramText);
if(!empty($paramKlasse)) $this->setzeKlasse($paramKlasse);
}
public function setzeText($paramText) {
$this->text = $paramText;
$this->lexikonGroesse = $this->berechneLexikonGroesse();
}
public function setzeKlasse($paramKlasse) {
$this->klasse = $paramKlasse;
}
public function gibText() {
return $this->text;
}
public function gibWoerterInArray() {
return explode(" ", $this->text);
}
public function gibKlasse() {
return $this->klasse;
}
public function gibLexikonGroesse() {
return $this->lexikonGroesse;
}
private function berechneLexikonGroesse(){
$woerter = explode(" ", $this->text);
return array_count_values($woerter);
}
}
class BayesKlassifikation {
private $kTexte;
private $uText;
private $wahrscheinlichkeitUText;
function __construct($paramKTexte = null, $paramUText = null) {
if(!empty($paramKTexte)) $this->setzeKTexte($paramKTexte);
if(!empty($paramUText)) $this->setzeUText($paramUText);
}
public function setzeKTexte($paramKTexte) {
$this->kTexte = $paramKTexte;
}
public function setzeUText($paramUText) {
$this->uText = $paramUText;
}
public function gibKTexte() {
return $this->kTexte;
}
public function gibUText() {
return $this->uText;
}
public function gibWahrscheinlichsteKlasseVonUText(){
if(empty($this->wahrscheinlichkeitUText))
$this->wahrscheinlichkeitUText = $this->berechneWahrscheinlichsteKlasseVonText($this->kTexte,
array("chinesischer Text", "japanischer Text"),
$this->uText);
return $this->wahrscheinlichkeitUText;
}
public static function berechneKlassenWahrscheinlichkeit($kTexte, $klasse) {
$klassen = array();
foreach($kTexte as $kText){
if($kText->gibKlasse()) array_push($klassen, $kText->gibKlasse());
}
$klassenCounts = array_count_values($klassen);
return ($klassenCounts[$klasse]/count($klassen));
}
public static function berechneGesamtLexikonGroesse($kTexte) {
$gesLexikon = array();
foreach($kTexte as $kText){
foreach($kText->gibLexikonGroesse() as $key => $value){
if(!array_key_exists($key, $gesLexikon))
$gesLexikon[$key] = 0;
$gesLexikon[$key] += $value;
}
}
return count($gesLexikon);
}
public static function berechneKlassenGroesse($kTexte, $klasse) {
$klassenGroesse = 0;
foreach($kTexte as $kText){
if($kText->gibKlasse() == $klasse){
$klassenGroesse += array_sum($kText->gibLexikonGroesse());
}
}
return $klassenGroesse;
}
public static function berechneWortWahrscheinlichkeitInKlasse($kTexte, $klasse, $wort) {
$klassenLexikon = array();
foreach($kTexte as $kText){
if($kText->gibKlasse() == $klasse){
foreach($kText->gibLexikonGroesse() as $key => $value){
if(!array_key_exists($key, $klassenLexikon))
$klassenLexikon[$key] = 0;
$klassenLexikon[$key] += $value;
}
}
}
if(array_key_exists($wort, $klassenLexikon))
return $klassenLexikon[$wort];
else return 0;
}
public static function berechneTextWahrscheinlichkeitInKlasse($kTexte, $klasse, $kText) {
$woerterArray = $kText->gibWoerterInArray();
$wortWahrscheinlichkeit = 1;
for($i = 0; $i < count($woerterArray); $i++){
$tmpWortWahrscheinlichkeit = ($this->berechneWortWahrscheinlichkeitInKlasse($kTexte, $klasse, $woerterArray[$i]) + 1)/
($this->berechneKlassenGroesse($kTexte, $klasse) + $this->berechneGesamtLexikonGroesse($kTexte));
$wortWahrscheinlichkeit *= $tmpWortWahrscheinlichkeit;
}
return $this->berechneKlassenWahrscheinlichkeit($kTexte, $klasse) * $wortWahrscheinlichkeit;
}
public static function berechneWahrscheinlichsteKlasseVonText($kTexte, $klassen, $uText) {
$wahrscheinlichkeitenKlassen = array();
foreach($klassen as $klasse){
$tmpWahrscheinlichkeit = $this->berechneTextWahrscheinlichkeitInKlasse($kTexte, $klasse, $uText);
$wahrscheinlichkeitenKlassen[$klasse] = $tmpWahrscheinlichkeit;
}
$max = array_keys($wahrscheinlichkeitenKlassen, max($wahrscheinlichkeitenKlassen));
return $max[0];
}
}
// Start - init:
$kText1 = new KlassifizierterText("China Peking China", "chinesischer Text");
$kText2 = new KlassifizierterText("China China Schanghai", "chinesischer Text");
$kText3 = new KlassifizierterText("China Honkong", "chinesischer Text");
$kText4 = new KlassifizierterText("Tokio Japan China", "japanischer Text");
$kTexte = array($kText1, $kText2, $kText3, $kText4);
$uText = new KlassifizierterText("China China China Tokio Japan");
$bayesKlassifikation = new BayesKlassifikation();
$bayesKlassifikation->setzeKTexte($kTexte);
$bayesKlassifikation->setzeUText($uText);
$wahrscheinlichsteKlasse = $bayesKlassifikation->gibWahrscheinlichsteKlasseVonUText();
//echo $wahrscheinlichesteKlasse;
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for git.master , git.master_jit , rfc.property-hooks Fatal error: Uncaught Error: Using $this when not in object context in /in/PVduG:141
Stack trace:
#0 /in/PVduG(74): BayesKlassifikation::berechneWahrscheinlichsteKlasseVonText(Array, Array, Object(KlassifizierterText))
#1 /in/PVduG(163): BayesKlassifikation->gibWahrscheinlichsteKlasseVonUText()
#2 {main}
thrown in /in/PVduG on line 141
Process exited with code 255 . This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.
Active branches Archived branches Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page
preferences:dark mode live preview
79.5 ms | 401 KiB | 8 Q