Menggunakan C++ untuk pemprosesan bahasa semula jadi melibatkan pemasangan perpustakaan Boost.Regex, ICU dan pugixml. Artikel itu memperincikan penciptaan stemmer, yang mengurangkan perkataan kepada kata dasar mereka, dan model beg-of-words, yang mewakili teks sebagai vektor kekerapan perkataan. Menunjukkan penggunaan model segmentasi perkataan, stemming dan beg-of-word untuk menganalisis teks dan mengeluarkan perkataan tersegmen, batang perkataan dan kekerapan perkataan.
Pemprosesan Bahasa Asli (NLP) ialah satu disiplin yang menggunakan komputer untuk melaksanakan tugas seperti memproses, menganalisis dan menjana bahasa manusia. Artikel ini menerangkan cara menggunakan bahasa pengaturcaraan C++ untuk NLP dan analisis teks.
Anda perlu memasang perpustakaan berikut:
Arahan untuk memasang pustaka semula
Creee di UbuntuStemmers digunakan untuk mengurangkan perkataan kepada kata dasar.
sudo apt install libboost-regex-dev libicu-dev libpugixml-dev
Model beg-of-words ialah model yang mewakili teks sebagai vektor kekerapan perkataan.
#include <boost/algorithm/string/replace.hpp> #include <iostream> #include <map> std::map<std::string, std::string> stemmer_map = { {"ing", ""}, {"ed", ""}, {"es", ""}, {"s", ""} }; std::string stem(const std::string& word) { std::string stemmed_word = word; for (auto& rule : stemmer_map) { boost::replace_all(stemmed_word, rule.first, rule.second); } return stemmed_word; }
Berikut ialah demonstrasi analisis teks menggunakan kod di atas:
#include <map> #include <string> #include <vector> std::map<std::string, int> create_bag_of_words(const std::vector<std::string>& tokens) { std::map<std::string, int> bag_of_words; for (const auto& token : tokens) { std::string stemmed_token = stem(token); bag_of_words[stemmed_token]++; } return bag_of_words; }
Output:
#include <iostream> #include <vector> std::vector<std::string> tokenize(const std::string& text) { // 将文本按空格和句点分词 std::vector<std::string> tokens; std::istringstream iss(text); std::string token; while (iss >> token) { tokens.push_back(token); } return tokens; } int main() { std::string text = "Natural language processing is a subfield of linguistics, computer science, information engineering, and artificial intelligence concerned with the interactions between computers and human (natural) languages."; // 分词并词干化 std::vector<std::string> tokens = tokenize(text); for (auto& token : tokens) { std::cout << stem(token) << " "; } std::cout << std::endl; // 创建词袋模型 std::map<std::string, int> bag_of_words = create_bag_of_words(tokens); for (const auto& [word, count] : bag_of_words) { std::cout << word << ": " << count << std::endl; } }
Atas ialah kandungan terperinci Bagaimana untuk menggunakan C++ untuk pemprosesan bahasa semula jadi dan analisis teks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!