使用OCR工具我从截图中提取文本(每个约1-5个句子).但是,在手动验证提取的文本时,我注意到有时会出现几个错误.
鉴于文本"你好!我真的喜欢Spark❤️!",我注意到:
1)像"I","!"和"l"这样的字母被"|"代替.
2)Emojis未被正确提取并被其他字符替换或被遗漏.
3)不时删除空格.
结果,我可能会得到一个像这样的字符串:"你好7l |真实|喜欢Spark!"
因为我试图将这些字符串与包含正确文本的数据集相匹配(在这种情况下"Hello there!我真的很喜欢Spark❤️!"),我正在寻找一种有效的方法来匹配Spark中的字符串.
任何人都可以建议一个有效的Spark算法,它允许我比较提取文本(〜100.000)与我的数据集(约1亿)?
我有一个数据集,其中包含工人的人口统计信息,如年龄性别,地址等及其工作地点.我从数据集创建了一个RDD并将其转换为DataFrame.
每个ID有多个条目.因此,我创建了一个DataFrame,其中只包含工人的ID和他/她工作过的各个办公地点.
|----------|----------------|
| **ID** **Office_Loc** |
|----------|----------------|
| 1 |Delhi, Mumbai, |
| | Gandhinagar |
|---------------------------|
| 2 | Delhi, Mandi |
|---------------------------|
| 3 |Hyderbad, Jaipur|
-----------------------------
Run Code Online (Sandbox Code Playgroud)
我想根据办公地点计算每个工人与其他工人之间的余弦相似度.
所以,我遍历了DataFrame的行,从DataFrame中检索了一行:
myIndex = 1
values = (ID_place_df.rdd.zipWithIndex()
.filter(lambda ((l, v), i): i == myIndex)
.map(lambda ((l,v), i): (l, v))
.collect())
Run Code Online (Sandbox Code Playgroud)
然后使用地图
cos_weight = ID_place_df.select("ID","office_location").rdd\
.map(lambda x: get_cosine(values,x[0],x[1]))
Run Code Online (Sandbox Code Playgroud)
计算提取的行和整个DataFrame之间的余弦相似度.
我不认为我的方法是好的,因为我在迭代DataFrame的行,它失败了使用spark的整个目的.在pyspark有更好的方法吗?好心提醒.