use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
-use LanguageDetector\LanguageDetector;
+use LanguageDetection\Language;
class ChatLog extends Model {
return $this->belongsTo(User::class);
}
+ public function getTextWithoutEmotes() {
+ $text = $this->text_content;
+ if (isset($this->tags['emotes']) && !empty($this->tags['emotes'])) {
+ $emotes = explode('/', $this->tags['emotes']);
+ foreach ($emotes as $emote) {
+ $set = explode(':', $emote);
+ $positions = explode(',', $set[1]);
+ foreach ($positions as $position) {
+ $coords = explode('-', $position);
+ for ($i = intval($coords[0]); $i <= intval($coords[1]); ++$i) {
+ $text[$i] = ' ';
+ }
+ }
+ }
+ }
+ return trim(preg_replace('/\s+/', ' ', $text));
+ }
+
public function evaluate() {
$this->evaluateUser();
$this->evaluateChannel();
$languages[] = 'en';
}
}
- $detector = LanguageDetector::detect($this->text_content, $languages);
- $scores = $detector->getScores();
- $lang = strval($detector->getLanguage());
+ $detector = (new Language($languages))->detect($this->getTextWithoutEmotes());
+ $scores = $detector->close();
+ $lang = strval($detector);
//var_dump($scores, $lang, $this->text_content);
- if (is_array($scores) && isset($scores[$lang]) && $scores[$lang] > 0.35) {
+ if (!empty($lang) && $scores[$lang] > 0.4) {
$this->detected_language = $lang;
}
}