?> applyCategory - WeAreCAS
textRuleScore

applyCategory

Beschreibung

Die Aktion `applyCategory` wendet ein vordefiniertes Kategoriemodell (eine MCO-Datei) auf Textdaten an, um diese zu kategorisieren. Sie identifiziert und klassifiziert Dokumente basierend auf den im Modell definierten Regeln. Diese Aktion ist entscheidend für das Scoring von Texten, bei dem es darum geht, relevante Kategorien basierend auf dem Inhalt automatisch zuzuweisen. Sie kann auch detaillierte Informationen über die Übereinstimmungen ausgeben, die zur Kategorisierung geführt haben, was für die Validierung und Feinabstimmung der Regeln nützlich ist.

textRuleScore.applyCategory { casOut={name="table-name" <,caslib="string"> <,compress=TRUE|FALSE> <,indexVars={"variable-name-1" <, "variable-name-2", ...>}> <,label="string"> <,lifetime=64-bit-integer> <,maxMemSize=64-bit-integer> <,memoryFormat="DVR"|"INHERIT"|"STANDARD"> <,promote=TRUE|FALSE> <,replace=TRUE|FALSE> <,replication=integer> <,tableRedistUpPolicy="DEFER"|"NOREDIST"|"REBALANCE"> <,threadBlockSize=64-bit-integer> <,timeStamp="string"> <,where={"string-1" <, "string-2", ...>}>} docId="string" docType="TEXT"|"XML" groupedMatchOut={name="table-name" <,caslib="string"> <,compress=TRUE|FALSE> <,indexVars={"variable-name-1" <, "variable-name-2", ...>}> <,label="string"> <,lifetime=64-bit-integer> <,maxMemSize=64-bit-integer> <,memoryFormat="DVR"|"INHERIT"|"STANDARD"> <,promote=TRUE|FALSE> <,replace=TRUE|FALSE> <,replication=integer> <,tableRedistUpPolicy="DEFER"|"NOREDIST"|"REBALANCE"> <,threadBlockSize=64-bit-integer> <,timeStamp="string"> <,where={"string-1" <, "string-2", ...>}>} matchDelimiter="string" matchOut={name="table-name" <,caslib="string"> <,compress=TRUE|FALSE> <,indexVars={"variable-name-1" <, "variable-name-2", ...>}> <,label="string"> <,lifetime=64-bit-integer> <,maxMemSize=64-bit-integer> <,memoryFormat="DVR"|"INHERIT"|"STANDARD"> <,promote=TRUE|FALSE> <,replace=TRUE|FALSE> <,replication=integer> <,tableRedistUpPolicy="DEFER"|"NOREDIST"|"REBALANCE"> <,threadBlockSize=64-bit-integer> <,timeStamp="string"> <,where={"string-1" <, "string-2", ...>}>} model={name="table-name" <,caslib="string"> <,computedOnDemand=TRUE|FALSE> <,computedVars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...}> <,computedVarsProgram="string"> <,dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}> <,groupBy={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...}> <,groupByMode="NOSORT"|"REDISTRIBUTE"> <,importOptions={fileType="ANY"|"AUDIO"|"AUTO"|"BASESAS"|"CSV"|"DELIMITED"|"DOCUMENT"|"DTA"|"ESP"|"EXCEL"|"FMT"|"HDAT"|"IMAGE"|"JMP"|"LASR"|"PARQUET"|"SOUND"|"SPSS"|"VIDEO"|"XLS", fileType-specific-parameters}> <,orderBy={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...}> <,singlePass=TRUE|FALSE> <,vars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...}> <,where="where-expression"> <,whereTable={casLib="string", dataSourceOptions={adls_noreq-parameters | bigquery-parameters | cas_noreq-parameters | clouddex-parameters | db2-parameters | dnfs-parameters | esp-parameters | fedsvr-parameters | gcs_noreq-parameters | greenplum-parameters | hadoop-parameters | hana-parameters | hdfs-parameters | impala-parameters | informix-parameters | jdbc-parameters | mongodb-parameters | mysql-parameters | netezza-parameters | odbc-parameters | oracle-parameters | path-parameters | postgres-parameters | redshift-parameters | s3-parameters | sapiq-parameters | sforce-parameters | singlestore_standard-parameters | snowflake-parameters | spark-parameters | spde-parameters | sqlserver-parameters | ss_noreq-parameters | teradata-parameters | vertica-parameters | yellowbrick-parameters}, importOptions={fileType="ANY"|"AUDIO"|"AUTO"|"BASESAS"|"CSV"|"DELIMITED"|"DOCUMENT"|"DTA"|"ESP"|"EXCEL"|"FMT"|"HDAT"|"IMAGE"|"JMP"|"LASR"|"PARQUET"|"SOUND"|"SPSS"|"VIDEO"|"XLS", fileType-specific-parameters}, name="table-name", vars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...}, where="where-expression"}>}} modelOut={name="table-name" <,caslib="string"> <,compress=TRUE|FALSE> <,indexVars={"variable-name-1" <, "variable-name-2", ...>}> <,label="string"> <,lifetime=64-bit-integer> <,maxMemSize=64-bit-integer> <,memoryFormat="DVR"|"INHERIT"|"STANDARD"> <,promote=TRUE|FALSE> <,replace=TRUE|FALSE> <,replication=integer> <,tableRedistUpPolicy="DEFER"|"NOREDIST"|"REBALANCE"> <,threadBlockSize=64-bit-integer> <,timeStamp="string"> <,where={"string-1" <, "string-2", ...>}>} scoringAlgorithm="FREQUENCY"|"WEIGHTED" table={name="table-name" <,caslib="string"> <,computedOnDemand=TRUE|FALSE> <,computedVars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...}> <,computedVarsProgram="string"> <,dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}> <,groupBy={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...}> <,groupByMode="NOSORT"|"REDISTRIBUTE"> <,importOptions={fileType="ANY"|"AUDIO"|"AUTO"|"BASESAS"|"CSV"|"DELIMITED"|"DOCUMENT"|"DTA"|"ESP"|"EXCEL"|"FMT"|"HDAT"|"IMAGE"|"JMP"|"LASR"|"PARQUET"|"SOUND"|"SPSS"|"VIDEO"|"XLS", fileType-specific-parameters}> <,orderBy={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...}> <,singlePass=TRUE|FALSE> <,vars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...}> <,where="where-expression"> <,whereTable={casLib="string", dataSourceOptions={adls_noreq-parameters | bigquery-parameters | cas_noreq-parameters | clouddex-parameters | db2-parameters | dnfs-parameters | esp-parameters | fedsvr-parameters | gcs_noreq-parameters | greenplum-parameters | hadoop-parameters | hana-parameters | hdfs-parameters | impala-parameters | informix-parameters | jdbc-parameters | mongodb-parameters | mysql-parameters | netezza-parameters | odbc-parameters | oracle-parameters | path-parameters | postgres-parameters | redshift-parameters | s3-parameters | sapiq-parameters | sforce-parameters | singlestore_standard-parameters | snowflake-parameters | spark-parameters | spde-parameters | sqlserver-parameters | ss_noreq-parameters | teradata-parameters | vertica-parameters | yellowbrick-parameters}, importOptions={fileType="ANY"|"AUDIO"|"AUTO"|"BASESAS"|"CSV"|"DELIMITED"|"DOCUMENT"|"DTA"|"ESP"|"EXCEL"|"FMT"|"HDAT"|"IMAGE"|"JMP"|"LASR"|"PARQUET"|"SOUND"|"SPSS"|"VIDEO"|"XLS", fileType-specific-parameters}, name="table-name", vars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...}, where="where-expression"}>}} text="string" }
Einstellungen
ParameterBeschreibung
casOutGibt den Namen der Ausgabedatentabelle für die Kategorien an.
docIdGibt einen eindeutigen ID-Variablennamen in der Eingabetabelle an, auf den sich die Zeile bezieht. Der Variablenname kann Zeichen oder numerisch sein.
docTypeGibt den Dokumenttyp an. Standardmäßig ist es 'TEXT'.
groupedMatchOutGibt den Namen einer KATEGORIEN-Ausgabetermtabelle an, die Übereinstimmungen nach Kategorie für jedes Dokument gruppiert. Die durch die Parameter matchOut und groupedMatchOut angegebenen Tabellen enthalten dieselben Informationen in unterschiedlichen Formaten. Die durch den Parameter matchOut angegebene Tabelle enthält eine Übereinstimmung pro Zeile. Die Angabe einer Tabelle für den Parameter groupedMatchOut ist optional.
matchDelimiterGibt das Trennzeichen an, das für jede Instanz von übereinstimmendem Text in der durch den Parameter groupedMatchOut angegebenen KATEGORIEN-Ausgabetermtabelle verwendet werden soll. Das Trennzeichen kann eine Zeichenfolge sein. Diese Zeichenfolge sollte 32 Zeichen nicht überschreiten. Standardmäßig ist es '|'.
matchOutGibt den Namen der KATEGORIEN-Ausgabetermtabelle an.
modelGibt eine Eingabe-CAS-Tabelle an, die das Kategorisierungsmodell enthält.
modelOutGibt den Namen der KATEGORIEN-Ausgabemodelltabelle an.
scoringAlgorithmGibt den Scoring-Algorithmus an. 'FREQUENCY' zählt die Häufigkeit, während 'WEIGHTED' gewichtete Berechnungen verwendet. Standardmäßig ist es 'FREQUENCY'.
tableGibt die Eingabedatentabelle für die Kategorisierung an.
textGibt den Namen der Textvariablen in der Eingabetabelle an, auf die das Modell angewendet wird.
Datenaufbereitung
Erstellung von Beispieldaten

Dieser Code erstellt eine CAS-Tabelle namens `reviews` in der `mycas` Caslib. Diese Tabelle enthält zwei Spalten: `docId` zur eindeutigen Identifizierung jedes Dokuments und `text` mit den zu analysierenden Textdaten. Diese Tabelle wird in den folgenden Beispielen als Eingabe für die Kategorisierungsaktion verwendet.

1PROC CAS;
2 datastep.runCode / code='data mycas.reviews;
3 length docId $ 50;
4 length text $ 300;
5 infile datalines delimiter="|";
6 input docId $ text $;
7 datalines;
8 doc1|The food was great and the service was excellent.
9 doc2|The room was clean, but the staff was not friendly.
10 doc3|I enjoyed the movie, the plot was amazing.
11 doc4|The product broke after a few days, very poor quality.
12 ;
13 run;';
14QUIT;

Beispiele

Dieses Beispiel zeigt, wie die Aktion `applyCategory` verwendet wird, um Textdaten basierend auf einem vorhandenen Kategoriemodell (`mycas.category_model`) zu bewerten. Die Ergebnisse werden in der Tabelle `mycas.categorized_reviews` gespeichert.

SAS® / CAS-Code
Kopiert!
1PROC CAS;
2 textRuleScore.applyCategory /
3 TABLE={name='reviews', caslib='mycas'},
4 model={name='category_model', caslib='mycas'},
5 docId='docId',
6 text='text',
7 casOut={name='categorized_reviews', caslib='mycas', replace=true};
8RUN;
9QUIT;
Ergebnis :
Eine neue CAS-Tabelle `categorized_reviews` wird erstellt, die die ursprünglichen Daten zusammen mit den zugewiesenen Kategorien für jeden Text enthält.

Dieses Beispiel zeigt einen fortgeschritteneren Anwendungsfall. Es verwendet den `WEIGHTED`-Scoring-Algorithmus. Zusätzlich zur Hauptausgabetabelle (`casOut`) werden zwei weitere Tabellen erstellt: `matchOut` speichert detaillierte Informationen zu jeder einzelnen Regelübereinstimmung und `groupedMatchOut` gruppiert diese Übereinstimmungen nach Kategorie für jedes Dokument, wobei ';' als Trennzeichen verwendet wird.

SAS® / CAS-Code
Kopiert!
1PROC CAS;
2 textRuleScore.applyCategory /
3 TABLE={name='reviews', caslib='mycas'},
4 model={name='category_model', caslib='mycas'},
5 docId='docId',
6 text='text',
7 casOut={name='categorized_reviews_weighted', caslib='mycas', replace=true},
8 matchOut={name='matches_detailed', caslib='mycas', replace=true},
9 groupedMatchOut={name='matches_grouped', caslib='mycas', replace=true},
10 matchDelimiter=';',
11 scoringAlgorithm='WEIGHTED';
12RUN;
13QUIT;
Ergebnis :
Drei Ausgabetabellen werden erstellt: `categorized_reviews_weighted` mit den gewichteten Kategorie-Scores, `matches_detailed` mit einer Zeile pro Regelübereinstimmung und `matches_grouped` mit einer Zeile pro Dokument, die alle übereinstimmenden Begriffe pro Kategorie zusammenfasst.

FAQ

Was ist die Aktion `applyCategory`?
Welchen Zweck hat der Parameter `model`?
Was gibt der Parameter `casOut` an?
Wie wird der Scoring-Algorithmus mit dem Parameter `scoringAlgorithm` festgelegt?
Was ist der Unterschied zwischen den Ausgabetabellen `matchOut` und `groupedMatchOut`?
Welche Dokumenttypen werden vom Parameter `docType` unterstützt?