0

Ich möchte jene Sätze identifizieren, die bestimmte Wörter haben. Wie Sie in meinem Code sehen werden, habe ich einige Begriffe und Sätze definiert. Ich möchte alle Sätze drucken, die diese definierten Begriffe haben.Wie bestimmte Wörter in der Text-Liste durch Apache Funke de-identifizieren?

**** Hier ist mein Code: ****

import scala.math.random 
import org.apache.spark._ 
object Clasifying { 

def main(args: Array[String]) { 
val conf = new SparkConf().setAppName("Classification") 
.setMaster("local") 

val sc = new SparkContext(conf) 

val terms = Array("this", "is", "my", "pen") 

val sentences = Array("this Date is mine", 
        "is there something", 
        "there are big dogs", 
        "The Date is mine", 
        "there may be something", 
        "where are pen", 
        "there is a dog", 
        "there are big cats", 
        "I am not able to to do it") 

val rdd = sc.parallelize(sentences) // create RDD 
val keys = terms.toSet   // words required as keys. 

val result = rdd.flatMap{ sen => 
       val words = sen.split(" ").toSet; 
       val common = keys & words;  // intersect 
       common.map(x => (x, sen))  // map as key -> sen 
      } 
      .groupByKey.mapValues(_.toArray)  // group values for a key 
      .collect 

println("*********************************") 
result.foreach(println) 
println("*********************************") 
sc.stop() 
} 

Mein Code, um das Ergebnis geben wie:

********************************* 
(pen,[Ljava.lang.String;@4cc76301) 
(this,[Ljava.lang.String;@2f08c4b) 
(is,[Ljava.lang.String;@3f19b8b3) 
********************************* 

Während ich ein Ergebnis wie wollen:

********************************* 
{this, is,(this Date is mine)} 
{is,(is there something)} 
{is,(the Date is mine)} 
{is,(is there something)} 
{pen,where are pen)} 
********************************* 

Vielen Dank im Voraus, wie ich bin neu zu entfachen und Stack-Überlauf mich so auf Fehler entschuldigen und fr fühlt ee, um meine Frage zu bearbeiten.

Noch eine Sache, die ich will, dass, was, wenn statt der Definition von einfachen Begriffen und Sätzen ich einige echte terms.txt Datei und ducoment.txt für Sätze? Wie wird der Code für diese Sättigung sein?

Antwort

1

Es hängt vor allem von der Größe Ihrer Dokumente und der Größe Ihrer Wortliste.

Wenn Sie in der Lage sind, die volle Wortliste im Speicher zu halten und ein komplettes Dokument in jedem Behälter, dann können Sie es sehr leicht durch eine UDF mit nur einer Karte. Wenn nicht, dann können Sie zuerst alle Wörter aus jedem Dokument sammeln und sie mit Ihrer Wortliste verbinden, um die Wörter "anonymisiert" zu bekommen.

Achten Sie darauf, sich nicht zu verbrennen: D

+0

stumpf die Größe beider Dokumente wird sehr groß sein –