php text analysis
Update Snowball Stemmer Library
PHP文本分析是使用PHP語言執行信息檢索(IR)和自然語言處理(NLP)任務的庫。該庫中有一些可以執行的工具:
該項目的所有文檔都可以在書籍和Wiki中找到。
一本書正在製作中,需要您的貢獻。您可以在https://github.com/yooper/php-text-analysis-book上找到這本書
另外,圖書館的文檔也位於Wiki中。 https://github.com/yooper/php-text-analysis/wiki
將PHP文本分析添加到您的項目
composer require yooper/php-text-analysis
$ tokens = tokenize ( $ text );您可以通過以Tokenizer類的名義自定義與令牌化的標記
$ tokens = tokenize ( $ text , TextAnalysis Tokenizers PennTreeBankTokenizer::class);默認令牌是 textAnalysis tokenizers generalTokenizer :: class 。一些令牌需要在實例化時設置參數。
默認情況下, normalize_tokens使用功能strtolower來降低所有令牌。要自定義歸一化函數,請傳遞Array_map使用的函數或字符串。
$ normalizedTokens = normalize_tokens (array $ tokens ); $ normalizedTokens = normalize_tokens (array $ tokens , ' mb_strtolower ' );
$ normalizedTokens = normalize_tokens (array $ tokens , function ( $ token ){ return mb_strtoupper ( $ token ); });呼叫freq_dist返回一個freqdist實例。
$ freqDist = freq_dist ( tokenize ( $ text ));默認情況下,生成了bigrams。
$ bigrams = ngrams ( $ tokens );自定義ngrams
// create trigrams with a pipe delimiter in between each word
$ trigrams = ngrams ( $ tokens , 3 , ' | ' );默認情況下,詞幹方法使用搬運工。
$ stemmedTokens = stem ( $ tokens );您可以通過以Stemmer類名的名稱傳遞來自定義哪種類型的Stemmer
$ stemmedTokens = stem ( $ tokens , TextAnalysis Stemmers MorphStemmer::class);有一種使用耙算法的捷徑方法。您需要在使用之前清潔數據。第二個參數是要提取的關鍵字的ngram大小。
$ rake = rake ( $ tokens , 3 );
$ results = $ rake -> getKeywordScores ();需要使用PHP使用Vader,https://github.com/cjhutto/vadersentiment進行情感分析。可以輕鬆調用PHP實現。只是將您的數據正常化。
$ sentimentScores = vader ( $ tokens );需要使用PHP進行一些文檔分類,並嘗試使用Naive Bayes實現。可以在單位測試中找到分類電影評論的示例
$ nb = naive_bayes ();
$ nb -> train ( ' mexican ' , tokenize ( ' taco nacho enchilada burrito ' ));
$ nb -> train ( ' american ' , tokenize ( ' hamburger burger fries pop ' ));
$ nb -> predict ( tokenize ( ' my favorite food is a burrito ' ));