我在csv文件中有一些推文数据,我想(1)只提取主题标签(如## cloudcomputing,#cloud_computing,#101Cloud等特殊字符,并将多个案例表示视为#edtech等一个标签,#Edtech,#EdTech等),(2)基于主题标签对推文进行分组,以及(3)计算每个主题标签单词在文档中或跨语料库文档中出现的次数。我知道我必须在' Title'的过滤器示例运算符中使用正则表达式。专栏,但不知道如何。 我尝试使用但失败的一些正则表达式是:属性名称(标题)=正则表达式 (?一世)#。* ^# /(#\ W +)/ U /(#[A-Z0-9] [A-Z0-9 -_] *)/ IG 这是我创建的进程的XML代码的链接 https://myexplorations.sharefile.com/d-sefddef555cf4d61a 这是源数据文件的链接 https://myexplorations.sharefile.com/d-s92197963830466cb 有人可以帮忙吗?
答案 0 :(得分:1)
这两个文件都是XML格式,但不是标准的RapidMiner格式,其中一个看起来有点像MS Word,是吗?
无论如何,请随意以不同的格式重新发布数据,但我认为这可能会有所帮助。 首先确保您拥有RapidMiner的文本处理扩展。
接下来使用来自数据的流程文档及其内部使用以下3个操作符:转换案例,剪切文档和合并文件。这些对CSV中的每个示例的作用是使文本小写,从文本和文本中单独提取主题标签。然后将它们组合成一个新文档(如果一段文本中有多个主题标签)
我使用的regEx是(?i)#[0-9a-z _] * ,这只是为了速度,但它应该捕获我能想到的所有情况。
此过程的输出是整个语料库中的词汇表计数,告诉您文档中出现的主题标签的次数。这应该让你开始。
<?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>