집 >데이터 베이스 >MySQL 튜토리얼 >텍스트 분석을 위해 MySQL 데이터베이스를 사용하는 방법은 무엇입니까?
텍스트 분석을 위해 MySQL 데이터베이스를 사용하는 방법은 무엇입니까?
빅데이터 시대가 도래하면서 텍스트 분석은 매우 중요한 기술이 되었습니다. 널리 사용되는 관계형 데이터베이스인 MySQL은 텍스트 분석에도 사용할 수 있습니다. 이 기사에서는 텍스트 분석을 위해 MySQL 데이터베이스를 사용하는 방법을 소개하고 해당 코드 예제를 제공합니다.
먼저 텍스트 데이터를 저장할 MySQL 데이터베이스와 테이블을 만들어야 합니다. 다음 SQL 문을 사용하여 "analytic"이라는 데이터베이스와 "text_data"라는 테이블을 생성할 수 있습니다.
CREATE DATABASE analysis; USE analysis; CREATE TABLE text_data ( id INT PRIMARY KEY AUTO_INCREMENT, content TEXT );
다음 단계는 분석할 텍스트 데이터를 MySQL 데이터베이스로 가져오는 것입니다. 이는 LOAD DATA INFILE
문이나 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
문을 사용하여 테이블에 데이터를 삽입합니다. 텍스트 분석
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;
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()
결과 표시 및 시각화
마지막으로 MySQL의 결과 집합과 Python의 Matplotlib와 같은 기타 시각화 도구를 사용할 수 있습니다. , Tableau 등)을 사용하여 분석 결과를 표시합니다. 예를 들어 다음 Python 코드를 사용하여 Matplotlib를 사용하여 각 단어의 발생 빈도를 보여주는 히스토그램을 생성할 수 있습니다. 🎜rrreee🎜위는 MySQL 데이터베이스를 사용하여 텍스트 분석을 위한 기본 단계 및 샘플 코드입니다. 실제 프로젝트에서 텍스트 분석 작업에 도움이 되기를 바랍니다. 🎜위 내용은 텍스트 분석을 위해 MySQL 데이터베이스를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!