Bagaimana untuk menggunakan pangkalan data MySQL untuk analisis teks?
Dengan kemunculan era data besar, analisis teks telah menjadi teknologi yang sangat penting. Sebagai pangkalan data hubungan yang popular, MySQL juga boleh digunakan untuk analisis teks. Artikel ini akan memperkenalkan cara menggunakan pangkalan data MySQL untuk analisis teks dan menyediakan contoh kod yang sepadan.
Pertama, kita perlu mencipta pangkalan data MySQL dan jadual untuk menyimpan data teks. Anda boleh menggunakan pernyataan SQL berikut untuk mencipta pangkalan data bernama "analisis" dan jadual bernama "data_teks".
CREATE DATABASE analysis; USE analysis; CREATE TABLE text_data ( id INT PRIMARY KEY AUTO_INCREMENT, content TEXT );
Langkah seterusnya ialah mengimport data teks untuk dianalisis ke dalam pangkalan data MySQL. Ini boleh dicapai menggunakan pernyataan LOAD DATA INFILE
atau pernyataan INSERT INTO
. LOAD DATA INFILE
语句或INSERT INTO
语句来实现。
如果文本数据保存在一个CSV文件中,可以使用如下的SQL语句导入数据:
LOAD DATA INFILE 'path/to/text_data.csv' INTO TABLE text_data FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ' ' IGNORE 1 ROWS;
如果文本数据保存在一个其他类型的文件中,可以使用相应的方法将其读取到内存中,然后使用INSERT INTO
SELECT COUNT(*) FROM text_data;
INSERT INTO
untuk memasukkan data ke dalam jadual. Analisis Teks
SELECT SUM(LENGTH(content) - LENGTH(REPLACE(content, ' ', '')) + 1) FROM text_data;
SELECT * FROM text_data WHERE content LIKE '%keyword%';
SELECT word, COUNT(*) AS count FROM ( SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(content, ' ', n), ' ', -1) AS word FROM text_data JOIN ( SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 ) AS numbers ON CHAR_LENGTH(content) - CHAR_LENGTH(REPLACE(content, ' ', '')) >= n - 1 ) AS words GROUP BY word ORDER BY count DESC LIMIT 10;
SELECT CONCAT(word1, ' ', word2) AS phrase, COUNT(*) AS count FROM ( SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(content, ' ', n1), ' ', -1) AS word1, SUBSTRING_INDEX(SUBSTRING_INDEX(content, ' ', n2), ' ', -1) AS word2 FROM text_data JOIN ( SELECT a.n + b.n * 10 AS n1, a.n + b.n * 10 + 1 AS n2 FROM ( SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) AS a CROSS JOIN ( SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 ) AS b ) AS numbers ON CHAR_LENGTH(content) - CHAR_LENGTH(REPLACE(content, ' ', '')) >= n2 - 1 ) AS phrases GROUP BY phrase ORDER BY count DESC LIMIT 10;
Paparan hasil dan visualisasi
Akhirnya, kita boleh setkan hasil visual Matplot seperti MySQL dan lib. , Tableau, dsb.) untuk memaparkan keputusan analisis. Sebagai contoh, anda boleh menggunakan kod Python berikut untuk menggunakan Matplotlib untuk menjana histogram yang menunjukkan kekerapan setiap perkataan: 🎜import matplotlib.pyplot as plt import mysql.connector cnx = mysql.connector.connect(user='your_username', password='your_password', host='localhost', database='analysis') cursor = cnx.cursor() query = ("SELECT word, COUNT(*) AS count FROM (" "SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(content, ' ', n), ' ', -1) AS word " "FROM text_data " "JOIN (" "SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4" ") AS numbers " "ON CHAR_LENGTH(content) - CHAR_LENGTH(REPLACE(content, ' ', '')) >= n - 1" ") AS words " "GROUP BY word " "ORDER BY count DESC " "LIMIT 10") cursor.execute(query) words = [] counts = [] for (word, count) in cursor: words.append(word) counts.append(count) plt.bar(words, counts) plt.xlabel('Word') plt.ylabel('Count') plt.title('Frequency of Top 10 Words') plt.xticks(rotation=45) plt.show() cursor.close() cnx.close()
Atas ialah kandungan terperinci Bagaimana untuk menggunakan pangkalan data MySQL untuk analisis teks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!