ホームページ >データベース >mysql チュートリアル >MySQL データベースをテキスト分析に使用するにはどうすればよいですか?
MySQL データベースをテキスト分析に使用するにはどうすればよいですか?
ビッグデータ時代の到来により、テキスト分析は非常に重要なテクノロジーになりました。人気のリレーショナル データベースである MySQL は、テキスト分析にも使用できます。この記事では、MySQL データベースをテキスト分析に使用する方法と、対応するコード例を紹介します。
まず、テキスト データを保存するための MySQL データベースとテーブルを作成する必要があります。次の SQL ステートメントを使用して、「analysis」という名前のデータベースと「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
ステートメントを使用して実現できます。
テキスト データが 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
ステートメントを使用してデータをテーブルに挿入します。
データを MySQL データベースにインポートしたら、SQL ステートメントを使用してテキスト分析を行うことができます。以下に、一般的に使用されるテキスト分析操作とそれに対応する SQL ステートメントの例を示します。
SELECT COUNT(*) FROM text_data;
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;
最後に、MySQL の結果セットと他の視覚化ツール (たとえば、 Python Matplotlib、Tableau など) を使用して分析結果を表示します。
たとえば、次の Python コードを使用すると、Matplotlib を使用して各単語の出現頻度を示すヒストグラムを生成できます:
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 データベースを使用した分析。実際のプロジェクトでのテキスト分析作業に役立つことを願っています。
以上がMySQL データベースをテキスト分析に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。