如何在aws lambda中添加mecab库

2024-04-02

我正在尝试将 mecab 库添加到 aws lambda 层,但它不起作用。

我想要的是标记日语和韩语。标记化就足够了。

这就是我所做的。 (我参考了这个网站:https://towardsdatascience.com/how-to-install-python-packages-for-aws-lambda-layer-74e193c76a91 https://towardsdatascience.com/how-to-install-python-packages-for-aws-lambda-layer-74e193c76a91用于为 aws lambda 层安装 python 包)

  1. AWS EC2 docker 安装。

  2. 构建docker文件

sudo vi Dockerfile

-----------------vi editor------------------
FROM amazonlinux:2.0.20191016.0
RUN yum install -y python37 && \
    yum install -y python3-pip && \
    yum install -y zip && \
    yum clean all
RUN python3.7 -m pip install --upgrade pip && \
    python3.7 -m pip install virtualenv
-----------------vi editor------------------


docker build -t lambdalayer .
  1. Run
docker run -it --name lambdalayer lambdalayer:latest bash

  1. 安装Python包
python3.7 -m venv mypackages

source mypackages/bin/activate

pip install mecab-python3 -t ./python
pip install unidic-lite -t ./python
pip install --no-binary :all: mecab-python3 -t ./python
pip install -v python-mecab-ko -t ./python

deactivate
  1. zip file
zip -r python.zip ./python/

docker cp lambdalayer:python.zip /home/ubuntu/
  1. AWS s3上传
cd /home/ubuntu

aws s3 cp python.zip s3://bukketyounghee
  1. 制作一个 lambda 层
aws lambda publish-layer-version --layer-name layer-search --compatible-runtimes "python3.7" --content S3Bucket=bukketyounghee,S3Key=python.zip

我不知道接下来我应该做什么。它不一定是 mecab 库,但我想使用 aws lambda,因为我想要一个无服务器应用程序。请帮我。

提前致谢!


您可以创建一个拉姆达层 https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html using docker如中所述AWS blog https://aws.amazon.com/premiumsupport/knowledge-center/lambda-layer-simulated-docker/.

因此你可以添加mecab您的功能如下:

  1. 创建空文件夹,例如mylayer.

  2. 转到文件夹并创建requirements.txt文件内容为

mecab-python3
unidic-lite
  1. 运行以下 Docker 命令:

该命令将为 python3.8 创建层:

docker run -v "$PWD":/var/task "lambci/lambda:build-python3.8" /bin/sh -c "pip install -r requirements.txt -t python/lib/python3.8/site-packages/; exit"
  1. 将图层存档为 zip:
zip -9 -r mylayer.zip python 
  1. 基于以下内容创建 lambda 层mylayer.zip在 AWS 控制台中。不要忘记指定Compatible runtime to python3.8.

  2. 将第 5 步中创建的图层添加到您的函数中。

  3. 我使用您的代码测试了该层:

import json

import MeCab

def lambda_handler(event, context):
        
    wakati = MeCab.Tagger("-Owakati")

    a = wakati.parse("pythonが大好きです").split()
    return  {
        'statusCode': 200,  
        'body': json.dumps(a)
        }

有用正确地:

{
  "statusCode": 200,
  "body": "[\"python\", \"\\u304c\", \"\\u5927\\u597d\\u304d\", \"\\u3067\\u3059\"]"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在aws lambda中添加mecab库 的相关文章

  • PHP-docker容器中的环境变量

    我想在我的 docker 容器中显示一个环境变量 PHP 脚本如下所示 我使用 OpenShift 来启动容器 PHP 容器显示 env is 现在我更改容器的 dc 配置 oc env dc envar USER Pieter deplo
  • 如何使用一个模型中间层的输出作为另一个模型的输入?

    我训练一个模型A并尝试使用中间层的输出name layer x 作为模型的附加输入B 我尝试像 Keras 文档一样使用中间层的输出https keras io getting started faq how can i obtain th
  • 如何管理AWS ECS中docker镜像的版本?

    AWS ECS 服务指向一个任务定义 其中包含 docker 镜像的名称 包括标签 因此 当我创建新版本的 docker 映像时 我有两种可能性 将任务定义更新到新版本 然后更新服务以指向任务定义的新版本 使用一些标签指向最后一个版本 假设
  • Matplotlib 图例,跨列添加项目而不是向下添加项目

    对于下面的简单绘图 有没有办法让 matplotlib 填充图例 以便它从左到右填充行 而不是第一列然后第二列 gt gt gt from pylab import gt gt gt x arange 2 pi 2 pi 0 1 gt gt
  • 查找正在导入哪些 python 模块

    从应用程序中使用的特定包中查找所有 python 模块的简单方法是什么 sys modules是将模块名称映射到模块的字典 您可以检查其键以查看导入的模块 See http docs python org library sys html
  • 使用pathlib获取主目录

    翻看新的pathlib在 Python 3 4 中 我注意到没有任何简单的方法来获取用户的主目录 我能想到的获取用户主目录的唯一方法是使用旧的os path像这样的库 import pathlib from os import path p
  • 在linux上安装python ssl模块,无需重新编译

    是否可以在已经安装了 OpenSSL 的 Linux 机器上安装 python 的 SSL 模块 而无需重新编译 python 我希望它就像复制几个文件并将它们包含在库路径中一样简单 Python版本是2 4 3 谢谢 是否可以在已经安装了
  • ValueError:数据必须为正(boxcox scipy)

    我正在尝试将我的数据集转换为正态分布 0 8 298511e 03 1 3 055319e 01 2 6 938647e 02 3 2 904091e 02 4 7 422441e 02 5 6 074046e 02 6 9 265747e
  • 正在使用 PIL 保存损坏的图像

    我遇到一个问题 操作图像像素导致保存损坏的图像 因此 我使用 PIL 打开图像 然后将其转换为 NumPy 数组 image Image open myimage png np image np asarray image 然后 我转置图像
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • 更改 Matplotlib 投影轴的背景颜色

    我正在尝试使用 Cartopy 创建一个图形 该图形需要在未投影的轴上绘制投影轴 这是一个尽可能简单的代码版本 它将轴上的内容替换为背景颜色 import matplotlib pyplot as plt import cartopy cr
  • 使用 if 语句的网格网格和用户定义函数的真值不明确

    假设我有一个函数f x y 足够光滑 然而 有些值仅在有限的意义上存在 以sin x x的价值x 0只存在于极限 x gt 0 中 在一般情况下 我用一个来处理这个问题if陈述 如果我在情节中使用它meshgrid我收到一条错误消息 Val
  • Django 2、python 3.4 无法解码 urlsafe_base64_decode(uidb64)

    我正在尝试通过电子邮件激活用户 电子邮件有效 编码有效 我使用了 django1 11 中的方法 该方法运行成功 在 Django 1 11 中 以下内容成功解码为 28 其中 uidb64 b Mjg force text urlsafe
  • 为什么 Collections.counter 这么慢?

    我正在尝试解决罗莎琳德的基本问题 即计算给定序列中的核苷酸 并在列表中返回结果 对于那些不熟悉生物信息学的人来说 它只是计算字符串中 4 个不同字符 A C G T 出现的次数 我期望collections Counter是最快的方法 首先
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • 从迭代器外部将 StopIteration 发送到 for 循环

    有几种方法可以打破一些嵌套循环 他们是 1 使用中断 继续 for x in xrange 10 for y in xrange 10 print x y if x y gt 50 break else continue only exec
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 使用 pandas 单元格中列表的长度选择行[重复]

    这个问题在这里已经有答案了 我有一张表 df a b c 1 x y x 2 x z c d 3 x t e f g 只是想知道如何使用 c 列的长度选择行 such as df loc len df c gt 1 我知道这是不对的 正确的
  • 在Python中停止ThreadPool中的进程

    我一直在尝试为控制某些硬件的库编写一个交互式包装器 用于 ipython 有些调用对 IO 的影响很大 因此并行执行任务是有意义的 使用 ThreadPool 几乎 效果很好 from multiprocessing pool import
  • Biopython 可以执行 Seq.find() 来解释歧义代码吗

    我希望能够在 Seq 对象中搜索考虑歧义代码的子序列 Seq 对象 例如 以下内容应该是正确的 from Bio Seq import Seq from Bio Alphabet IUPAC import IUPACAmbiguousDNA

随机推荐

  • 无法连接到 Kubernetes 中的 Mongodb pod(连接被拒绝)

    我有一些远程虚拟机 我想在其中部署一些 Mongodb 实例 然后使它们可以远程访问 但由于某种原因 我似乎无法完成这项工作 这些是我采取的步骤 我启动了一个在远程虚拟机上运行 Mongodb 的 Kubernetes pod 然后我通过
  • 无法安装 hubot - 未满足 npm 依赖关系

    在尝试部署 hubot 时 npm 不断抱怨未满足的依赖关系 该文档没有解释如何解决这个问题 yum install npm enablerepo epel yum install nodejs enablerepo epel cd opt
  • 数据库表中每条记录的唯一字符串

    在我的 Asp Net MVC 5 项目中 我首先使用实体 框架代码来处理 MS SQL 数据库 假设这是表 public class Ticket Key public int Id get set Required public str
  • 如何使用带连字符的 ES6 导入

    我真的不知道该怎么做 也不知道如何谷歌 现在我有这个 let source require vinyl source stream 我想更改为导入 但这不起作用 import vinyl source stream as source fr
  • PySNMP:导入错误:没有名为 pyasn1.compat.octets 的模块

    我尝试在 Windows 上使用 PySNMP 但是当我尝试导入 cmdgen 时 我看到以下错误 from pysnmp entity rfc3413 oneliner import cmdgen ImportError No modul
  • GWT 应用程序中使用的 Javascript 通用 clone() 方法

    我试图编写一个通用克隆函数 它应该能够进行真正的深度克隆 我遇到过这个链接 如何在 javascript 中深度克隆 https stackoverflow com questions 4459928 how to deep clone i
  • Electron:计算机重新启动后启动时最小化应用程序

    我在用节点自动启动 https github com Teamwork node auto launch计算机重新启动后启动我的应用程序 此应用程序仅适用于 Windows 我希望该应用程序默认以最小化方式启动 因为它在后台运行 我怎样才能
  • PHP AES 解密工作加密不工作

    所以 我有 4 件中的 3 件在工作 iOS 加密 解密由此而来Link http iphonedevelopment blogspot com 2009 02 strong encryption for cocoa cocoa touch
  • 如何在mongoDB中过滤从hh:mm到hh:mm两个时间之间的数据

    Mongoose var filter filter strBillDate gte new Date req params fromdate lt new Date req params todate return Sales aggre
  • 为什么在 Erlang 中使用 OTP?

    正如问题所说 使用 Erlang 进行开发时 使用 OTP 设计原则会带来什么好处 我正在开发一个仅接收命令并发送响应的服务器 正如 Jonas 所说 OTP 是一组久经考验的设计元素和习惯用法 用于创建容错系统以及其他功能 例如灵活性 实
  • 添加到类内的列表

    我有这门课 public class User private string name public string UserName get set public List
  • 我可以在没有 Visual Studio 的情况下使用 Visual C++ 编译器吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有什么方法可以从命令行使用 Visual C 或 Visual C 编译器而无需安装 Visual Studio 我以前也试过 没找到 寻
  • MongoDB 和 C# Find()

    我有下面的代码 我是 mongodb 的新手 我需要帮助来查找集合中的特定元素 using MongoDB Bson using MongoDB Driver namespace mongo console public class Use
  • 是否可以通过 Elasticsearch 中的映射来更新索引中的现有字段?

    我已经创建了一个索引 它包含我的数据MySQL数据库 我有几个字段string在我的表中 我需要它们作为不同的类型 integer double in Elasticsearch 所以我知道我可以通过mapping如下 mappings m
  • UITableViewController 和 UITextField 键盘

    我有一个带有分组静态 UITableView 的 UITableViewController 我正在故事板上定义静态表视图的单元格 其中一个单元格中有一个文本字段 当调用此文本字段时 键盘会弹出 但是 表视图不会像表视图控制器上通常那样自动
  • 泛型类型不相等

    下面的代码段打印出 类型不相同 为什么 我知道使用interfaceOnMyType GetGenericTypeDefinition 可以解决问题 但为什么我必须这样做呢 class Program static void Main st
  • :active 时的样式按钮与 :hover 不同

    我想制作一个按钮 在悬停时显示背景颜色 在按钮按下时显示没有背景颜色的按钮颜色 这是我当前的代码 windowButton hover background color 1a82b8 windowButton active windowCl
  • 如何在 Cypress 中点击 x 次

    我的网站上有一个对象列表 所有对象旁边都有 添加 按钮 单击第一个 添加 按钮时 将添加该对象 并且该行消失并被下一个对象取代 对象名称相同 在保存之前 我想 click 三次以添加列表中的前三个对象 我怎样才能做到这一点 我知道 clic
  • 带有页眉和页脚的 uiwebview

    我正在尝试添加页眉和页脚 它们都是UIViews 但由于某种原因我的页脚粘在底部 我正在使用KVO查看我的内容大小的方法 我在这里介绍我认为问题所在的方法 void updateLayout Update the frame of the
  • 如何在aws lambda中添加mecab库

    我正在尝试将 mecab 库添加到 aws lambda 层 但它不起作用 我想要的是标记日语和韩语 标记化就足够了 这就是我所做的 我参考了这个网站 https towardsdatascience com how to install