在单词的句子中找到句子

find sentence among sentence of words

我有两个 Pandas 数据框。一个所有的句子都按单词垂直分割,看起来像这样

Sentence | Text   
1            I
1          like
1          Cats
2          The
2          man
2         plays
2         soccer
2         today

另一个数据框是这样的:

ID      | Text         | Tags
1         plays soccer   sport
2          man           human
3         like cats     interest

我想做的是将Tags映射到句子中两个地方都匹配的词的第一个数据框,不匹配的得到一个“O”来表示。

Sentence | Text        | Tags 
1          I             O
1          like          interest
1          Cats          interest
2          The           O
2          man           human
2          plays         sport
2          soccer        sport
2          today         O

假设 df1 是您的第一个 table 并且 df2 是您的第二个(其中 ID 是索引)那么您可以:

  • 引爆你的第二个 table (str.split() + explode())
  • merge() 左连接
  • fillna() NaNO

例如:

In []:
df1.merge(df2.assign(Text=df2.Text.str.split()).explode('Text'), 'left').fillna('O')

Out[]:
   Sentence    Text      Tags
0         1       I         O
1         1    like  interest
2         1    Cats         O
3         2     The         O
4         2     man     human
5         2   plays     sport
6         2  soccer     sport
7         2   today         O

目前这是区分大小写的,但是在 Textstr.lower() 列上合并是一个简单的练习。