Maison  >  Article  >  base de données  >  Comment utiliser la base de données MySQL pour l'analyse de texte ?

Comment utiliser la base de données MySQL pour l'analyse de texte ?

PHPz
PHPzoriginal
2023-07-12 12:43:39907parcourir

Comment utiliser la base de données MySQL pour l'analyse de texte ?

Avec l'avènement de l'ère du big data, l'analyse de texte est devenue une technologie très importante. En tant que base de données relationnelle populaire, MySQL peut également être utilisée pour l'analyse de texte. Cet article explique comment utiliser la base de données MySQL pour l'analyse de texte et fournit des exemples de code correspondants.

  1. Créer une base de données et des tables

Tout d'abord, nous devons créer une base de données MySQL et des tables pour stocker les données texte. Vous pouvez utiliser l'instruction SQL suivante pour créer une base de données nommée « analyse » et une table nommée « text_data ».

CREATE DATABASE analysis;
USE analysis;
CREATE TABLE text_data (
    id INT PRIMARY KEY AUTO_INCREMENT,
    content TEXT
);
  1. Importer des données texte

L'étape suivante consiste à importer les données texte à analyser dans la base de données MySQL. Ceci peut être réalisé en utilisant l'instruction LOAD DATA INFILE ou l'instruction 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

Si les données texte sont enregistrées dans un fichier CSV, vous pouvez utiliser l'instruction SQL suivante pour importer les données :
    SELECT COUNT(*) FROM text_data;
  1. Si les données texte sont enregistrées dans un fichier d'autres types, vous pouvez utiliser la méthode correspondante pour les lire en mémoire, puis utilisez l'instruction INSERT INTO pour insérer des données dans la table.

Analyse de texte

  • Une fois les données importées dans la base de données MySQL, vous pouvez utiliser des instructions SQL pour l'analyse de texte. Voici quelques opérations d'analyse de texte couramment utilisées et des exemples d'instructions SQL correspondantes :
    Comptez le nombre de textes :
  • SELECT SUM(LENGTH(content) - LENGTH(REPLACE(content, ' ', '')) + 1) FROM text_data;
    Comptez le nombre de mots :
  • SELECT * FROM text_data WHERE content LIKE '%keyword%';
    Trouver un texte contenant des mots-clés spécifiques :
  • 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;
    Trouver les mots les plus fréquents :
  • 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;
    Trouver les combinaisons de deux mots les plus fréquentes :
  1. 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()

Affichage et visualisation des résultats

Enfin, nous pouvons utiliser le jeu de résultats de MySQL et d'autres outils de visualisation tels que Matplotlib de Python , Tableau, etc.) pour afficher les résultats de l'analyse.

Par exemple, vous pouvez utiliser le code Python suivant pour utiliser Matplotlib afin de générer un histogramme indiquant la fréquence de chaque mot : 🎜rrreee🎜Voici les étapes de base et un exemple de code pour l'analyse de texte à l'aide d'une base de données MySQL. J'espère que cela pourra vous aider dans votre travail d'analyse de texte dans des projets réels. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn