Intersección de selección múltiple de nube de palabras (Y en lugar de O)

Un usuario Pregunto ✅

ABmagia

Hola,

He estado jugando con la visualización de Word Cloud y me pregunto si hay una configuración que le permita cambiar la lógica que se emplea al seleccionar varias palabras en la visualización. Por ejemplo, si vi la palabra «teléfono» y «tienda», es posible que desee ver todos los comentarios que contienen ambas palabras. Sin embargo, en este momento, está configurado como OR donde extraerá comentarios que contengan «teléfono» o «tienda».

Este puede ser el valor predeterminado para la mayoría de las visualizaciones en Power BI, pero pregúntese si hay alguna forma de personalizar la lógica que se usa.

¡Gracias!

Owen Auger

En respuesta a ABmagia

Usé una función Splitter Splitter.SplitTextByWhitespace() para agregar una columna que divide cada oración en palabras. Luego expandí esta columna en nuevas filas.

Aquí está la consulta utilizada en mi enlace de Dropbox.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKslIVUhOLFEoKs0rVorVgQik5KejCuTmlxanIoRyK1FEYgE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Sentence = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Sentence", type text}}),
    #"Duplicated Column" = Table.DuplicateColumn(#"Changed Type", "Sentence", "Sentence - Copy"),
    #"Lowercased Text" = Table.TransformColumns(#"Duplicated Column",{{"Sentence - Copy", Text.Lower, type text}}),
    #"Added Custom" = Table.AddColumn(#"Lowercased Text", "Word", each Splitter.SplitTextByWhitespace([#"Sentence - Copy"])),
    #"Expanded Word" = Table.ExpandListColumn(#"Added Custom", "Word"),    #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Word",{{"Word", type text}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Sentence - Copy"})
in
    #"Removed Columns"

Con datos de texto reales, imagino que necesitaría limpiar el texto de varias maneras y eliminar la puntuación.

spmvoss

Me doy cuenta de que este es un tema antiguo, pero también es casi exactamente lo que estoy buscando.

Tengo un gran conjunto de datos con registro de horas de trabajo con descripciones para cada entrada. Luego usé un algoritmo externo para extraer palabras clave, que luego se agregaron en una lista separada por comas, consulte la tabla a continuación. Tengo una nube de palabras visual con Palabras clave como categoría y Horas como valores.

Ahora, el problema que tengo con la solución propuesta es que esto haría explotar mi conjunto de datos, considerando que el número promedio de palabras clave es 6/7. ¿Alguien sabría una forma inteligente de resolver esto sin tener muchas líneas duplicadas? Pensé en usar la función FIND(), pero mi problema es que la función ALLSELECTED() devolverá [Updating, Requirements, Document] en lugar de solo Actualizar cuando seleccionamos esa palabra.

Fecha Proyecto Horas Descripción Palabras clave
20-07-2020 Proyecto X 2.5 Actualización del documento de requisitos [Updating, Requirements, Document]

Owen Auger

Hola @ABmagic

Puede hacer esto creando una medida adecuada y usándola para filtrar un objeto visual de ‘oraciones’.

Vea un modelo ficticio aquí:

https://www.dropbox.com/s/499zocl05bk8bqk/Word%20cloud%20multi-select%20intersection.pbix?dl=0

Tengo una tabla simple llamada Frases que contiene Oración y Palabra columnas

Oración Palabra
el gato corre el
el gato corre gato
el gato corre carreras
el perro corre el
el perro corre perro
el perro corre carreras
el raton corre el
el raton corre ratón
el raton corre carreras
mi raton corre mi
mi raton corre ratón
mi raton corre carreras

Creé estas dos medidas:

Word Frequency = 
COUNTROWS ( Sentences )

Sentence Count With All Words = 
VAR WordsSelected =
    ALLSELECTED ( Sentences[Word] )
RETURN
    COUNTROWS (
        FILTER (
            VALUES ( Sentences[Sentence] ),
            VAR WordsInSentence =
                CALCULATETABLE ( VALUES ( Sentences[Word] ) )
            RETURN
                ISEMPTY ( EXCEPT ( WordsSelected, WordsInSentence ) )
        )
    )

El Recuento de oraciones con todas las palabras La medida comprueba si las palabras correspondientes a una oración en particular incluyen al menos todas las palabras seleccionadas y cuenta todas las oraciones que cumplen esta condición.

Luego creé una nube de palabras usando Palabra & Frecuencia de palabra y una tabla visual que simplemente contiene el Oración campo.

En la tabla visual, agregué un filtro de nivel visual Recuento de oraciones con todas las palabras > 0.

Luego, seleccionar varias palabras filtra la tabla visual de manera adecuada.

Esto funciona con mi modelo de datos simple, pero podría requerir ajustes dependiendo de cómo estén configuradas sus tablas.

Espero que ayude 🙂

Saludos,

Owen

ABmagia

En respuesta a Owen Auger

¿Alguna forma rápida de crear la columna «palabra»? Tengo más de 1300 filas de comentarios con los que estoy trabajando.

¡Gracias!

Owen Auger

En respuesta a ABmagia

Usé una función Splitter Splitter.SplitTextByWhitespace() para agregar una columna que divide cada oración en palabras. Luego expandí esta columna en nuevas filas.

Aquí está la consulta utilizada en mi enlace de Dropbox.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKslIVUhOLFEoKs0rVorVgQik5KejCuTmlxanIoRyK1FEYgE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Sentence = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Sentence", type text}}),
    #"Duplicated Column" = Table.DuplicateColumn(#"Changed Type", "Sentence", "Sentence - Copy"),
    #"Lowercased Text" = Table.TransformColumns(#"Duplicated Column",{{"Sentence - Copy", Text.Lower, type text}}),
    #"Added Custom" = Table.AddColumn(#"Lowercased Text", "Word", each Splitter.SplitTextByWhitespace([#"Sentence - Copy"])),
    #"Expanded Word" = Table.ExpandListColumn(#"Added Custom", "Word"),    #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Word",{{"Word", type text}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Sentence - Copy"})
in
    #"Removed Columns"

Con datos de texto reales, imagino que necesitaría limpiar el texto de varias maneras y eliminar la puntuación.

ABmagia

En respuesta a Owen Auger

¡Gracias por esto! ¡Tendré que darle una oportunidad a esto alguna vez! ¡Gracias!

@ABmagic,

Me temo que no hay ningún método para personalizar la lógica como se describe en el visual personalizado de Word Cloud. Con respecto a este problema, puede enviar una solicitud de función en el foro de ideas de Power BI.

Saludos,
lidia

ABmagia

En respuesta a v-yuezhe-msft

¿Es lo mismo para todas las visualizaciones dentro de Power BI?

¡Gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *