J'ai le même problème qui a été discuté dans ce lien Python extract sentence containing word, mais la différence est que je veux trouver 2 mots dans la même phrase. J'ai besoin d'extraire des phrases d'un corpus contenant 2 mots spécifiques. Est-ce que quelqu'un pourrait m'aider, s'il vous plaît?Python extrayant la phrase contenant 2 mots
0
A
Répondre
1
Si c'est ce que vous entendez:
import re
txt="I like to eat apple. Me too. Let's go buy some apples."
define_words = 'some apple'
print re.findall(r"([^.]*?%s[^.]*\.)" % define_words,txt)
Output: [" Let's go buy some apples."]
Vous pouvez également essayer avec:
define_words = raw_input("Enter string: ")
Vérifiez si la phrase contient les mots définis:
import re
txt="I like to eat apple. Me too. Let's go buy some apples."
words = 'go apples'.split(' ')
sentences = re.findall(r"([^.]*\.)" ,txt)
for sentence in sentences:
if all(word in sentence for word in words):
print sentence
0
Je pense que vous veux une réponse en utilisant nltk. Et je suppose que ces 2 mots n'ont pas besoin d'être consécutifs, n'est-ce pas?
>>> from nltk.tokenize import sent_tokenize, word_tokenize
>>> text = 'I like to eat apple. Me too. Let's go buy some apples.'
>>> words = ['like', 'apple']
>>> sentences = sent_tokenize(text)
>>> for sentence in sentences:
... if (all(map(lambda word: word in sentence, words))):
... print sentence
...
I like to eat apple.
2
Ce serait simple en utilisant le paquet TextBlob avec Python sets de builtin. Fondamentalement, parcourir les phrases de votre texte et vérifier s'il existe une intersection entre l'ensemble des mots dans la phrase et vos mots de recherche.
from text.blob import TextBlob
search_words = set(["buy", "apples"])
blob = TextBlob("I like to eat apple. Me too. Let's go buy some apples.")
matches = []
for sentence in blob.sentences:
words = set(sentence.words)
if search_words & words: # intersection
matches.append(str(sentence))
print(matches)
# ["Let's go buy some apples."]
Mise à jour: Ou, plus Pythonically,
from text.blob import TextBlob
search_words = set(["buy", "apples"])
blob = TextBlob("I like to eat apple. Me too. Let's go buy some apples.")
matches = [str(s) for s in blob.sentences if search_words & set(s.words)]
print(matches)
# ["Let's go buy some apples."]
Questions connexes
- 1. Python extrayant la phrase contenant le mot excluant les chaînes numériques
- 2. Comment filtrer la phrase en contenant des mots dans UISearchbar
- 3. inverse, tous les 2 mots d'une phrase
- 4. Comment récupérer des mots d'une phrase contenant des caractères spéciaux?
- 5. Phrase d'extrait de Python contenant le mot
- 6. Mots de nettoyage Python dans une phrase
- 7. Recherche de phrase qui peut contenant des mots différents en Python
- 8. Python extrayant des cellules Excel
- 9. python: compter les jetons de mots dans la phrase
- 10. Détermination de la proximité entre 2 mots dans une phrase en Python
- 11. Python Python extrayant des mots coupés des cellules avec des expressions
- 12. extraire une phrase qui contient une liste de mots-clés ou une phrase en utilisant python
- 13. Nombre de mots par phrase
- 14. Générer deux mots phrase de la phrase complète (combinaisons)
- 15. Diviser la phrase en chameau en mots
- 16. Inverser les mots impairs dans la phrase
- 17. javascript casser la phrase par les mots
- 18. Can Spacy peut-il être utilisé pour trouver un sujet de phrase contenant plusieurs mots?
- 19. Sélectionnez les lignes ne contenant pas la phrase
- 20. Réorganiser les mots dans une phrase donnée en python
- 21. Python Compréhension de liste (convertir une phrase en mots)
- 22. Obtenir les mots de phrase - SQL
- 23. Modification de la phrase en mots séparés
- 24. Enlever les mots d'aide de la phrase
- 25. Javascript divise la phrase unicode en mots
- 26. Scinder une phrase en mots
- 27. Expression régulière Python pour rechercher des mots dans une phrase
- 28. Python - Comment trouver tous les mots d'une phrase?
- 29. Suppression de mots non anglais d'une phrase en python
- 30. Fetch mots dans une phrase
Merci badc0re, mais j'oublié de mentionner que ces 2 mots ne doivent pas nécessairement être consécutives. Est-ce un moyen d'utiliser regex et d'obtenir le même résultat que dans la réponse ci-dessous par moliware? – Marcelo
J'ai ajouté une autre solution similaire à @moliware en utilisant regex. – badc0re