在pyspark数据帧中添加POS partofspeech列

2024-09-28 12:11:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在pyspark数据框中工作,我想添加一列,用pyspark或nltk.pos_标记查看单词是名词、动词、ADJ、ADV、ADP、PROPN

这是派斯帕克桌子

------------------------
| event_dt   | words   |
------------------------
| 2020-09-02 | mifi    |
| 2020-09-02 | hotspot |
| 2020-09-03 | service |
| 2020-09-03 | word    |
| 2020-09-03 | plan    |

两列继续

这是我使用pyspark寻找的结果

-------------------------------
| event_dt   | words   | pos  |
-------------------------------
| 2020-09-02 | mifi    | ADJ  |
| 2020-09-02 | hotspot | ADJ  |
| 2020-09-03 | service | ADJ  |
| 2020-09-03 | word    | NOUN |
| 2020-09-03 | plan    | NOUN |

我不确定“单词”列中的单词在哪里比较,结果是形容词、名词、代词等

提前谢谢你的帮助


Tags: 数据poseventservicedt单词pysparkword
1条回答
网友
1楼 · 发布于 2024-09-28 12:11:52

处理这种情况的最佳方法是使用when()otherwise(),它只不过是if else

一个先决条件:只需将所有单词添加到列表中

在这里创建数据框

df = spark.createDataFrame([("2020-09-02","mifi"),("2020-09-02","hotspot"),("2020-09-02","service"),("2020-09-02","word"),("2020-09-02","plan")],["event_dt","word"])
df.show(truncate=False)
+     +   -+
|event_dt  |word   |
+     +   -+
|2020-09-02|mifi   |
|2020-09-02|hotspot|
|2020-09-02|service|
|2020-09-02|word   |
|2020-09-02|plan   |
+     +   -+

形容词和;when()否则()条件

adj = ["mifi", "hotspot","service"]
df = df.withColumn("pos", F.when(F.col("word").isin(adj), F.lit("ADJ")).otherwise(F.lit("NOUN")))
df.show(truncate=False)

最终产量

+     +   -+  +
|event_dt  |word   |pos |
+     +   -+  +
|2020-09-02|mifi   |ADJ |
|2020-09-02|hotspot|ADJ |
|2020-09-02|service|ADJ |
|2020-09-02|word   |NOUN|
|2020-09-02|plan   |NOUN|
+     +   -+  +

相关问题 更多 >

    热门问题