Les mots vides et stemmer en java
Je songe à un arrêt de mots dans mon similitude programme, puis un analyseur morphologique (va pour les porteurs 1 ou 2 dépend de ce que la plus simple à mettre en œuvre)
Je me demandais que depuis que j'ai lu mon texte à partir de fichiers comme des lignes entières et de les enregistrer comme une longue chaîne de caractères, donc si j'ai deux chaînes de ex.
String one = "I decided buy something from the shop.";
String two = "Nevertheless I decidedly bought something from a shop.";
Maintenant que j'ai eu ces chaînes
Découlant:
Puis-je utiliser l'analyseur morphologique algoritmen directement sur elle, l'enregistrer comme une Chaîne, puis continuer à travailler sur la similitude comme je l'ai fait avant la mise en œuvre de l'analyseur morphologique dans le programme, comme la course.la tige(); est le genre de chose?
Arrêter mot:
Comment cela fonctionne? O. o
Dois-je simplement utiliser; un.replaceall("je", ""); ou est-il une manière spécifique à utiliser pour ce processus? Je veux continuer à travailler avec la corde et obtenir une chaîne de caractères avant d'utiliser la similitude des algorithmes sur elle pour obtenir la similitude. Wiki ne dit pas beaucoup.
Espère que vous pourrez m'aider! Merci.
Edit: C'est pour une école liés au projet pour lequel je suis en train d'écrire un papier sur la similarité entre les différents algorithmes, donc je ne pense pas que je suis autorisé à utiliser lucene ou d'autres bibliothèques qui fait le travail pour moi. De Plus, je voudrais essayer de comprendre comment cela fonctionne avant de me lancer en utilisant les bibliothèques comme Lucene et co. J'espère que c'est pas trop la peine ^^
OriginalL'auteur N00programmer | 2011-05-25
Vous devez vous connecter pour publier un commentaire.
Si vous n'êtes pas la mise en œuvre de ce pour des raisons académiques, vous devriez envisager d'utiliser la Lucene de la bibliothèque. Dans les deux cas, il pourrait être bon pour référence. Il a des classes pour la segmentation, arrêter mot de filtrage, la troncature, et de la similitude. Voici un petit exemple d'utilisation de Lucene 3.0 pour supprimer les mots vides et de la tige d'une chaîne d'entrée:
Qui, si utilisé sur vos chaînes comme ceci:
Les rendements de cette sortie:
Pourquoi ne devriez-vous pas envisager de Lucene pour des fins académiques?
OriginalL'auteur WhiteFang34
Oui, vous pouvez envelopper un analyseur morphologique de sorte que vous pouvez écrire quelque chose comme
En interne, votre stemAndRemoveStopwords serait
un analyseur morphologique est un algorithme de couper les mots à leurs tiges. Il n'a aucune notion de " stop-words; mais les enlever est vraiment facile avec une simple table de hachage: mettre tous vos mots vides dans la table de hachage, et avant de la tige d'un mot d'entrée, si elle est dans la table de hachage, alors vous pouvez vous défausser d'enrayer.
Oui, semble que je suis en train de faire une plus grosse affaire de celui-ci que c'est. Merci de répondre.
OriginalL'auteur tucuxi
Vous n'avez pas à traiter avec l'ensemble du texte. Seulement split, appliquer votre mot vide de filtre et provenant de l'algorithme, puis construire la chaîne de nouveau à l'aide d'un
StringBuilder
:Oh, ok. Alors pourquoi ne pas rejoindre les jetons à l'aide d'un StringBuilder? Il est toujours plus facile que de traiter avec l'ensemble du texte.
Aygün : hmmm...tu veux dire la première coupe à jeton, de mots vides, de la tige et ensuite construire la chaîne de nouveau avant l'exécution de levenshtein sur elle? 😮
Exactement. Pourquoi cette peur?
Aygün : lol, non, il ne m'effraie pas. Je ne suis pas si vieux pour la programmation je ne sais donc pas que beaucoup à ce sujet. Que la raison pour laquelle je demande, c'était pour être sûr que je ne suis pas de malentendu quoi que ce soit. 😉 Ah, une petite question: Est-il une grande différence dans Stringbuilder et Stringbuffer? J'ai utilisé Stringbuffer et il fait le travail, mais à la fois vous et WhiteFang utiliser les autres alors je me demandais si c'est mal de me servir de Stringbuffer parce que je vais être en utilisant de grandes chaînes plus tard aussi.
OriginalL'auteur Eser Aygün