gpt4 book ai didi

python - 如何在 aws lambda 中添加 mecab 库

转载 作者:行者123 更新时间:2023-12-05 04:49:38 26 4
gpt4 key购买 nike

我正在尝试将 mecab 库添加到 aws lambda 层,但没有成功。

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

这是我所做的。 (我引用了这个网站: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. 运行
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 -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. 做一个lmabda层
aws lambda publish-layer-version --layer-name layer-search --compatible-runtimes "python3.7" --content S3Bucket=bukketyounghee,S3Key=python.zip

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

提前致谢!

最佳答案

您可以创建一个 lambda layer使用 docker,如 AWS blog 中所述.

因此您可以将 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. 在 AWS 控制台中基于 mylayer.zip 创建 lambda 层。不要忘记将 Compatible runtime 指定为 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\"]"
}

关于python - 如何在 aws lambda 中添加 mecab 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67545724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com