Maison  >  Article  >  développement back-end  >  Regrouper les mots avec des caractères de début et de fin similaires à l'aide de Python

Regrouper les mots avec des caractères de début et de fin similaires à l'aide de Python

PHPz
PHPzavant
2023-08-19 20:25:05745parcourir

Regrouper les mots avec des caractères de début et de fin similaires à laide de Python

En Python, nous pouvons regrouper des mots avec des caractères de statistique et de fin similaires en utilisant des méthodes telles que des dictionnaires et des boucles, en utilisant des expressions régulières et en implémentant des compréhensions de liste. La tâche consiste à analyser une collection de mots et à identifier des groupes de mots qui partagent un point de départ commun. et les personnages de fin. Cela peut être une technique utile dans diverses applications de traitement du langage naturel, telles que la classification de texte, la recherche d'informations et la vérification orthographique. Dans cet article, nous explorerons ces méthodes pour regrouper des mots de début et de fin similaires en Python.

Méthode 1 : Utiliser des dictionnaires et des boucles

Cette méthode utilise un dictionnaire pour regrouper les mots en fonction de leurs caractères de début et de fin similaires. En parcourant la liste de mots et en extrayant les caractères de début et de fin de chaque mot, nous pouvons créer une clé pour le dictionnaire. Les mots sont ensuite ajoutés à la liste correspondante dans le dictionnaire, formant des groupes en fonction de leurs caractères de début et de fin.

语法

list_name.append(element)

Ici, la fonction append() est une méthode de liste utilisée pour ajouter un élément à la fin du list_name. List_name est la liste dans laquelle la méthode append est appliquée.

Exemple

在下面的示例中,我们定义了一个名为group_words的函数,它以一个单词列表作为输入。我们初始化一个空字典groups来存储单词组。对于输入列表中的每个单词,我们提取其起始字符(word[0])和结束字符(word[−1])。然后我们使用这些字符创建一个元组键。

如果字典中已经存在该键,则将当前单词添加到相应的列表中。否则,我们创建一个以当前单词为第一个元素的新列表。最后,我们返回分组的结果字典。

def group_words(words):
    groups = {}
    for word in words:
        start_char = word[0]
        end_char = word[-1]
        key = (start_char, end_char)
        if key in groups:
            groups[key].append(word)
        else:
            groups[key] = [word]
    return groups

words = ['apple', 'banana', 'ant', 'cat', 'dog', 'elephant','amazon grape']
result = group_words(words)
print(result)

输出

{('a', 'e'): ['apple', 'amazon grape'], ('b', 'a'): ['banana'], ('a', 't'): ['ant'], ('c', 't'): ['cat'], ('d', 'g'): ['dog'], ('e', 't'): ['elephant']}

方法二:使用正则表达式

在这种方法中,我们使用正则表达式来匹配每个单词中的模式。通过定义一个特定的模式来捕获单词的起始和结束字符,我们可以提取这些字符并创建一个用于分组的键。

语法

import re
result = re.split(pattern, string)

Ici, la fonction re.split du module re prend deux paramètres : pattern et string. Le modèle est une expression régulière qui définit les critères de fractionnement, tandis que la chaîne est la chaîne d'entrée à diviser. La fonction renvoie une liste de sous-chaînes résultant de l'opération de division basée sur le modèle spécifié.

Exemple

在下面的方法中,我们使用re模块和正则表达式来匹配每个单词的起始和结束字符。我们定义了一个名为group_words的函数,它接受一个单词列表作为输入。在循环中,我们使用re.match来将模式^(.)(.*)(.)$与每个单词进行匹配。如果找到匹配项,我们分别使entre match.group(1) et match.group (3)分组。

import re

def group_words(words):
    groups = {}
    for word in words:
        match = re.match(r'^(.)(.*)(.)$', word)
        if match:
            start_char = match.group(1)
            end_char = match.group(3)
            key = (start_char, end_char)
            if key in groups:
                groups[key].append(word)
            else:
                groups[key] = [word]
    return groups

words = ['apple', 'banana', 'ant', 'cat', 'dog', 'elephant','amazon grape']
result = group_words(words)
print(result)

输出

{('a', 'e'): ['apple', 'amazon grape'], ('b', 'a'): ['banana'], ('a', 't'): ['ant'], ('c', 't'): ['cat'], ('d', 'g'): ['dog'], ('e', 't'): ['elephant']}

Méthode 3 : Utiliser les compréhensions de liste

Les compréhensions de listes offrent un moyen concis et efficace de regrouper les mots en fonction de leurs caractères de début et de fin. En utilisant la compréhension du dictionnaire et la compréhension ultérieure de la liste, nous pouvons créer un dictionnaire de groupes et le remplir avec les mots correspondants.

Exemple

Dans l'exemple ci-dessous, nous définissons une fonction group_words qui prend une liste de mots en entrée. En utilisant une seule compréhension de liste, nous créons des groupes de dictionnaires initiaux avec toutes les clés définies sur des listes vides. Lors de la prochaine compréhension de la liste, nous parcourons chaque mot de la liste d'entrée. Pour chaque mot, nous accédons à la liste correspondante dans le dictionnaire en utilisant (mot[0], mot[−1]) comme clé et y ajoutons le mot.

语法

[expression for item in list if condition]

在这里,语法由方括号包围的表达式和一个用于迭代列表的for循环组成。此外,可以添加一个可选的if条件来过滤元素。对于满足条件的列表中的每个项目,都会对表达式进行求值,并将结果收集到一个新列表中。

def group_words(words):
    groups = {(word[0], word[-1]): [] for word in words}
    [groups[(word[0], word[-1])].append(word) for word in words]
    return groups

words = ['apple', 'banana', 'ant', 'cat', 'dog', 'elephant','amazon grape']
result = group_words(words)
print(result)

输出

{('a', 'e'): ['apple', 'amazon grape'], ('b', 'a'): ['banana'], ('a', 't'): ['ant'], ('c', 't'): ['cat'], ('d', 'g'): ['dog'], ('e', 't'): ['elephant']}

Conclusion

在本文中,我们讨论了如何使用Python中的各种方法将具有相似起始和结束字符的单词进行分组。我们使用了三种不同的方法来对单词进行分组:使用字典和循环、使用正则表达式和使用列表推导式。通过使用这些技术,您可以高效地对单词进行分组,并从文本数据中获得有价值的见解,为各种自然语言处理应用打开了可能性。

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Jouer du son en PythonArticle suivant:Jouer du son en Python