Des idées pour le Traitement de la Langue Naturelle du projet?
Je dois faire un projet de fin d'informatique linguistique de la classe. Nous avons été à l'aide de OCaml tout le temps, mais j'ai aussi de la familiarité avec Java. Nous avons étudié la morphologie, de la Fsm, la collecte d'analyser les arbres, CYK de l'analyse, tente, refoulement des automates, expressions régulières, théorie des langages formels, sémantique, etc.
Voici quelques idées que j'ai trouvé. Avez-vous tout ce que vous pensez serait cool?
-
Un script qui scanne Facebook threads pour l'odieux* commentaires et silencieusement les cache avec JS (ce serait de fonctionner avec le consentement de l'utilisateur, évidemment)
-
Une analyse d'un morceau de l'écriture à l'aide de la sémantique, la syntaxe, la ponctuation, l'utilisation, et d'autres mesures, pour essayer de les "empreintes digitales" de l'auteur. Il pourrait être utilisé pour déterminer si les deux œuvres sont probablement écrit par le même auteur. Ou, quelqu'un pourrait la mettre dans un tas de l'écriture, il est fait au fil du temps, et avoir une idée de son style a changé.
-
Un chat bot (moins intéressant/original)
J'ai peut être autorisée à utiliser les bibliothèques existantes pour ce faire. N'importe existent pour OCaml? Sans bibliothèque/toolkit, ces trois idées sont probablement infaisable, à moins de me limiter à un très spécifique dans le domaine.
Niveau inférieur idées:
-
Opérations sur des machines à états finis - la réduction, de la composition de transducteurs, prouvant qu'un FSM est dans un minimum d'état possible. Je suis très intéressé par la théorie des graphes, de sorte que tout chevauchement avec les Smqs pourrait être un bon endroit pour explorer. (Ce que je peux faire avec Smqs?)
-
Quelque chose de cool avec la regex?
-
Quelque chose de cool avec CYK?
Quelqu'un d'autre avez des idées de génie?
*odieux défini comme étant la suite de certains modèles typiques de jeunes lycéens. L'imprécision de ce terme n'est pas un problème; pour le crédit, je pourrais définir ce que je veux et la cible qu'.
- Bien que personnellement, j'aime la question beaucoup de choses, j'ai l'impression que c'est pas de "constructive" par le soi définition :/
- Je n'ai simplement marquer un enfant de 3 ans question pour un examen? Tête->Bureau. Putain vous, les devoirs de la balise de nettoyage!
Vous devez vous connecter pour publier un commentaire.
Odieux de filtrage de langue - je pense que cela permettra de réduire vers le bas pour un processus très similaire à un spam, filtrage de mail. C'est le calcul de la fréquence d'un ensemble de plus-ou-moins "désagréable" mots. Il ne ressemble pas à, vous obtiendrez la portée de faire quelque chose de particulièrement intelligent, à moins que vous aussi utiliser d'autres sources d'information (par exemple, la structure des liens sociaux partagé entre l'expéditeur et le destinataire, peut-être). D'autre part, l'intimidation en ligne est une chose très sérieuse et vous pouvez parier que Facebook ou Myspace et autres sites de réseautage social, des soins de beaucoup de choses sur la lutte contre elle.
Analyses stylistiques - Il y a eu un peu de travail sur ce sous des formes diverses, souvent sous le nom de la paternité de l'analyse. Shlomo Argamon fait beaucoup de travail dans ce domaine et vous pourriez probablement découvrir beaucoup plus de références dans ses papiers. Une des meilleures façons de profil d'un auteur est d'apprendre la distribution de leur utilisation d'un ensemble de mots vides (un.k.une fonctionnelle de mots), comme "et", "mais", "si", etc. Je pense qu'il y a beaucoup plus de possibilités de faire quelque chose de nouveau et d'intéressant dans ce domaine - la paternité de l'analyse sur les données de l'internet est un problème difficile - mais aussi beaucoup plus de portée à l'échec.
Chat bot - Vous avez raison, c'est un joli projet standard. Il est également très difficile de mesurer le succès ou l'échec. Je pense que le projet serait plus convaincante si c'était un chat-bot avec une sorte de but, comme répondre à des questions dans un domaine limité, mais c'est quelque chose qui est très difficile à bien faire.
Le reste c'est vraiment trop vague pour faire des commentaires sur d', désolé.
Il n'y a pas toute la PNL bibliothèques, que je sache, en OCaml, c'est juste pas particulièrement populaire langage de programmation. Cependant, je ne sais d'une machine d'apprentissage de la bibliothèque en Ocaml, appelé MEGAM, écrit par Hal Daume, qui est un très bon PNL chercheur, qui a été utilisé pour la PNL tâches. J'ai un sentiment qu'trouver MEGAM et de l'utiliser pour faire quelques PNL tâche peut être trop gros un projet à prendre, cependant.
Quelques autres idées:
Voulais juste dire que j'adore votre deuxième idée. On dirait qu'il a tout à voir avec la PNL. Il me semble très intéressante. IMO, je voudrais aller avec celui-ci, pour sûr. Mais vous devriez également considérer celui qui vous attire le plus, et pas seulement les opinions des autres.
Comme pour la langue à choisir, je pense que vous devriez choisir celui que vous êtes plus à l'aise avec. Je ne suis pas familier avec les bibliothèques, mais j'ai vu beaucoup de PNL choses fait en Python et Java.
Utilisation de l'API twitter pour tirer tous les tweets d'une conversation sociale et de combiner\résumer\publier le contenu dans un essai\article\blog\etc que quelqu'un peut lire en une seule pièce. Corrélation des concepts et des idées, développer des références, améliorer la grammaire. Un peu comme bettween.com mais gonflé avec la PNL.
1 - Ce qui serait formidable pour moi, c'est quand vous passez en revue les documents universitaires et j'ai besoin de savoir quelle partie de ce travail est de:
-entièrement d'origine
-qu'est-ce purement un copier/coller
-ce qui est une pure paraphrase
-qu'est-ce qui dit exactement le contraire de référence précédente.
Idéalement, il serait de vérifier les références à l'intérieur du papier + tous les travaux antérieurs des auteurs (et peut vérifier citeseer trouver les références qui ont été potentiellement omis volontairement).
Ce serait vraiment utile.
2 - je voudrais un outil de vérification de toutes les questions de la SORTE, à la recherche pour le même genre de questions avec un tas de réponses et de générer une réponse qui peut être suffisant.
1a. script qui scanne facebook...
Comment envisagez-vous sur la définition de 'désagréable'. cela semble assez difficile.
2a. la similitude. la syntaxe et la sémantique, et d'autres "linguisticy" trucs sons difficiles. les gens ont fait ce genre de chose avec d'autres méthodes numériques, avec grand succès, bien que, par exemple à l'aide de la décomposition en valeurs singulières. je pense que cette méthode a également été incorporé dans le logiciel utilisé pour vérifier le plagiat. cette méthode est également souvent désigné comme la sémantique latente de l'analyse ou de la sémantique latente de la cartographie.
svdlibc:
http://tedlab.mit.edu/~dr/svdlibc/
1b. fsm choses. im pas sûr de ce que tu veux dire par "prouver qu'un transducteur est minime". c'est une jolie opération standard et est inclus dans pratiquement n'importe quel toolkit vous pourriez rencontrer. si vous êtes intéressé par fsms, jetez un oeil à la
AT&T toolkit:
http://www2.research.att.com/~fsmtools/fsm/
ou
OpenFST toolkit:
http://www.openfst.org/
smqs sont de plus en plus en popularité en tant que principe, la méthode unifiée pour faire de la reconnaissance vocale. mes études se concentre sur ce sujet, et il est en effet très intéressant.
ce sujet de la construction d'un hmm d'analyseur ou chunker, ou un simple décodeur de viterbi? si vous mettez ensemble un décent ensemble de formation (vous auriez à la balise elle-même, pour commencer), vous pourriez approximative d'une simple version de votre "odieux commentaires" tagger et de l'utiliser, peut-être avec une sorte de classificateur de "censure" ou de supprimer les commentaires odieux.
Je suggère que vous regardez dans le langage de programmation Prolog. C'est une logique déclarative langage de programmation avec le traitement du langage naturel étant l'un de ses premiers objectifs. Environ à mi-chemin en bas de cette page Wiki est un exemple de comment vous pouvez l'utiliser comme un analyseur du langage. Vous pouvez le faire facilement générer des milliers de phrases grammaticalement correctes et des phrases. C'est un outil très puissant. Je pense que l'aide, il serait très intéressant.
Je déconseille l'utilisation de Java, à moins qu'il y est une bibliothèque que vous avez désespérément besoin. J'ai fait un PNL projet final en Java une fois et trouve qu'il manque un peu de souplesse qui est souvent nécessaire (strict type de système, pas de fonctions anonymes, etc.). Malheureusement, je ne sais pas OCaml, mais dans le cas où vous connaissez Python, il y a beaucoup de PNL bibliothèques disponibles, pour que, par exemple, la très complet et activement développé NLTK.
1) Prendre un corps de texte et de convertir toutes les références de "son" à "lui" ou "son". Fondamentalement, cette question, de SORTE, ce qui semble être un pur projet.
2) je suis en supposant que vous avez étudié la grammaire transformationnelle approche arbres (X-bar théorie, etc.) Il y a cette autre théorie syntaxique nommé Head-Driven Phrase Structure Grammar (HPSG) qui postule pas l'utilisation de la "hiérarchie" pour décrire la syntaxe, mais utilise l'attribut-valeur de matrices de bien.
L'un des avantages de l'utilisation de ce système est que vous pouvez décrire la syntaxe comme dirigé acyclique graphiques, plutôt que des arbres. Votre prof pourrait être en mesure de vous à plus de/plus de ressources, mais cette page (vaguement) explique l'idée. Malheureusement, mon expérience a été que HPSG ressources sur le net sont assez défaut.
Mais, une fois que vous avez une idée de HPSG fonction des structures, vous pouvez rechercher dans la littérature pour les personnes (les linguistes et les linguistes informaticiens) qui viennent avec des moyens pour utiliser le graphique des représentations de choses intéressantes.
Vous pourriez peut-être créer une transformation de l'arbre-à-HPSG graphique convertisseur? (Vous devez avoir à savoir comment des choses comme "la", "contrôle", "passivizations", etc serait transformé en HPSG du "SLASH", "REL", etc.)
Je ne sais pas que tout un tas de programme pour votre classe sera très utile pour les problèmes 1 ou 2. Certaines des meilleures techniques pour ces types de problèmes ne vraiment simple linguistiques des trucs (comme partie du discours de marquage, tout simplement la suppression des mots vides, et en regardant bigrams et trigrammes), et ont un de la machine-l'apprentissage de la classification de textes composant qui n'est pas trop sophistiqué sur son propre (techniques standard comme Naïve Bayésienne classificateurs, Maximum d'Entropie classificateurs, Machines à Vecteurs de Support sont à peu près les boîtes noires de l'algorithme sage et bien). Jetez un oeil à ces études sur la classification de textes d'actualité et la paternité de détection pour avoir une idée de l'endroit où vous pouvez obtenir commencé.
Quelque chose de mieux adapté pour le programme d'études que vous avez décrit pourrait être de construire un de l'analyseur morphologique pour une langue étrangère que vous connaissez bien, ou bien de construire un stemmer (une mauvaise version de l'homme d'un analyseur morphologique) que les cartes de morphologiquement des termes relatifs à la même entrée dans un indice, quelque chose qui peut être utilisé par les moteurs de recherche.
Si vous n'avez pas besoin de venir avec un nouveau technique pour votre classe (c'est à dire si vous êtes un premier cycle), alors il existe un grand nombre de PNL tâches que vous pouvez mettre en œuvre dans OCaml, par exemple un analyseur formés sur le Penn Treebank, un analyseur syntaxique pour certains autres formalisme de la grammaire, une partie de la parole tagger, ou littéralement des douzaines d'autres applications.