2016-03-16 1 views
0

J'ai des données de tweets dans un fichier csv et je veux (1) extraire seulement les hashtags (avec des caractères spéciaux comme ## cloudcomputing, #cloud_computing, # 101Cloud, etc. comme un hashtag comme #edtech, #Edtech, # EdTech, etc), (2) grouper les tweets basés sur des hashtags et (3) compter le nombre de fois que chaque mot hashtag est apparu dans un document ou à travers les documents d'un corpus. Je comprends que je dois utiliser des expressions régulières dans l'opérateur Filtrer les exemples de la colonne 'Titre' mais que je ne sais pas comment faire. Certaines expressions régulières que j'ai essayé d'utiliser mais qui ont échoué sont: nom d'attribut (Titre) = expression régulière (? I) #. * ^ # /(# \ w +)/u /(# [a-z0- 9] [a-z0-9 -_] *)/ig Voici le lien vers le code XML du processus que j'ai créé https://myexplorations.sharefile.com/d-sefddef555cf4d61a Voici le lien vers le fichier de données source https://myexplorations.sharefile.com/d-s92197963830466cb pourrait d'aider quelqu'un s'il vous plaît?Dans Rapidminer extraire des hashtags à partir du contenu

Répondre

1

Les deux fichiers sont au format XML, mais pas dans un format RapidMiner standard, l'un d'eux ressemble un peu à MS Word, n'est-ce pas?

De toute façon, n'hésitez pas à republier les données dans un format différent, mais je pense que cela pourrait aider. Assurez-vous d'abord que vous disposez de l'extension de traitement de texte de RapidMiner.

Utilisation suivante Traiter des documents à partir de données et à l'intérieur de celui-ci utiliser les 3 opérateurs suivants: Transformer des cas, couper le document & Combiner des documents. Ce qui est fait pour chaque exemple dans votre fichier CSV fait le texte en minuscules, extrait les hashtags individuellement du texte & puis les combine dans un nouveau document (au cas où il y aurait plus d'un hashtag dans un texte).
Le regEx que j'ai utilisé était (? I) # [0-9a-z _] *, c'était juste pour la vitesse, mais il devrait capturer tous les cas auxquels je pouvais penser.
La sortie de ce processus est un comptage de mots sur le corpus, vous indiquant combien de fois un hashtag s'est produit dans un document. Cela devrait vous aider à démarrer.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<process version="7.0.001"> 
    <context> 
    <input/> 
    <output/> 
    <macros/> 
    </context> 
    <operator activated="true" class="process" compatibility="7.0.001" expanded="true" name="Process"> 
    <process expanded="true"> 
     <operator activated="true" class="read_csv" compatibility="7.0.001" expanded="true" height="68" name="Read CSV" width="90" x="45" y="136"> 
     <parameter key="csv_file" value="myCSV"/> 
     <parameter key="column_separators" value=","/> 
     <list key="annotations"/> 
     <list key="data_set_meta_data_information"> 
      <parameter key="0" value="myTextColum.true.text.regular"/> 
      <parameter key="1" value="anotherColumn.true.nominal.regular"/> 
     </list> 
     </operator> 
     <operator activated="true" class="text:process_document_from_data" compatibility="7.0.000" expanded="true" height="82" name="Process Documents from Data" width="90" x="179" y="85"> 
     <parameter key="vector_creation" value="Term Occurrences"/> 
     <list key="specify_weights"/> 
     <process expanded="true"> 
      <operator activated="true" class="text:transform_cases" compatibility="7.0.000" expanded="true" height="68" name="Transform Cases" width="90" x="45" y="34"> 
      <description align="center" color="transparent" colored="false" width="126">Makes everything lowercase</description> 
      </operator> 
      <operator activated="true" class="text:cut_document" compatibility="7.0.000" expanded="true" height="68" name="Cut Document" width="90" x="179" y="34"> 
      <parameter key="query_type" value="Regular Expression"/> 
      <list key="string_machting_queries"/> 
      <list key="regular_expression_queries"> 
       <parameter key="hashtags" value="(?i)#[0-9a-z_]*"/> 
      </list> 
      <list key="regular_region_queries"/> 
      <list key="xpath_queries"/> 
      <list key="namespaces"/> 
      <list key="index_queries"/> 
      <list key="jsonpath_queries"/> 
      <process expanded="true"> 
       <connect from_port="segment" to_port="document 1"/> 
       <portSpacing port="source_segment" spacing="0"/> 
       <portSpacing port="sink_document 1" spacing="0"/> 
       <portSpacing port="sink_document 2" spacing="0"/> 
      </process> 
      <description align="center" color="transparent" colored="false" width="126">Gets rid of everything but the hashtags</description> 
      </operator> 
      <operator activated="true" class="text:combine_documents" compatibility="7.0.000" expanded="true" height="82" name="Combine Documents" width="90" x="313" y="34"/> 
      <connect from_port="document" to_op="Transform Cases" to_port="document"/> 
      <connect from_op="Transform Cases" from_port="document" to_op="Cut Document" to_port="document"/> 
      <connect from_op="Cut Document" from_port="documents" to_op="Combine Documents" to_port="documents 1"/> 
      <connect from_op="Combine Documents" from_port="document" to_port="document 1"/> 
      <portSpacing port="source_document" spacing="0"/> 
      <portSpacing port="sink_document 1" spacing="0"/> 
      <portSpacing port="sink_document 2" spacing="0"/> 
     </process> 
     </operator> 
     <connect from_op="Read CSV" from_port="output" to_op="Process Documents from Data" to_port="example set"/> 
     <connect from_op="Process Documents from Data" from_port="example set" to_port="result 1"/> 
     <connect from_op="Process Documents from Data" from_port="word list" to_port="result 2"/> 
     <portSpacing port="source_input 1" spacing="0"/> 
     <portSpacing port="sink_result 1" spacing="21"/> 
     <portSpacing port="sink_result 2" spacing="0"/> 
     <portSpacing port="sink_result 3" spacing="0"/> 
    </process> 
    </operator> 
</process>