跳转到主要内容

文本预处理库

项目描述

Plane

Build Status

Plane 是一个使用肌肉力量将切割刀片压过木材表面来塑形木材的工具。
from Wikipedia

plane(tool) from wikipedia

此包用于从文本中提取或替换特定部分,如URL、电子邮件、HTML标签、电话号码等。还支持标点符号规范化和移除。

查看完整 文档

安装

仅支持Python 3.x

pip

pip install plane

从源安装

python setup.py install

特性

  • 无其他依赖项
  • 内置正则表达式模式: plane.pattern.Regex
  • 自定义正则表达式模式
  • 模式组合
  • 提取、替换模式
  • 分句
  • 链式函数调用: plane.plane.Plane
  • 管道: plane.Pipeline

用法

快速开始

使用正则表达式 提取替换 模式

from plane import EMAIL, extract, replace
text = 'fake@no.com & fakefake@nothing.com'

emails = extract(text, EMAIL) # this return a generator object
for e in emails:
    print(e)

>>> Token(name='Email', value='fake@no.com', start=0, end=11)
>>> Token(name='Email', value='fakefake@nothing.com', start=14, end=34)

print(EMAIL)

>>> Regex(name='Email', pattern='([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-]+)', repl='<Email>')

replace(text, EMAIL) # replace(text, Regex, repl), if repl is not provided, Regex.repl will be used

>>> '<Email> & <Email>'

replace(text, EMAIL, '')

>>> ' & '

模式

Regex 是一个包含3个元素的namedtuple

  • 名称
  • pattern:正则表达式
  • repl:替换标记,在调用 replace 函数时将替换匹配的正则表达式
# create new pattern
from plane import build_new_regex
custom_regex = build_new_regex('my_regex', r'(\d{4})', '<my-replacement-tag>')

您还可以从默认模式中构建新的模式。

注意:这仅适用于语言范围。

from plane import extract, build_new_regex, CHINESE_WORDS
ASCII = build_new_regex('ascii', r'[a-zA-Z0-9]+', ' ')
WORDS = ASCII + CHINESE_WORDS
print(WORDS)

>>> Regex(name='ascii_Chinese_words', pattern='[a-zA-Z0-9]+|[\\U00004E00-\\U00009FFF\\U00003400-\\U00004DBF\\U00020000-\\U0002A6DF\\U0002A700-\\U0002B73F\\U0002B740-\\U0002B81F\\U0002B820-\\U0002CEAF\\U0002CEB0-\\U0002EBEF]+', repl=' ')

text = "自然语言处理太难了!who can help me? (╯▔🔺▔)╯"
print(' '.join([t.value for t in list(extract(text, WORDS))]))

>>> "自然语言处理太难了 who can help me"

from plane import CHINESE, ENGLISH, NUMBER
CN_EN_NUM = sum([CHINESE, ENGLISH, NUMBER])
text = "佛是虚名,道亦妄立。एवं मया श्रुतम्। 1999 is not the end of the world. "
print(' '.join([t.value for t in extract(text, CN_EN_NUM)]))

>>> "佛是虚名,道亦妄立。 1999 is not the end of the world."

默认正则表达式: 详情

  • URL:仅ASCII
  • EMAIL:local-part@domain
  • TELEPHONE:如xxx-xxxx-xxxx
  • SPACE \t\n\r\f\v
  • HTML:HTML标签、脚本部分和CSS部分
  • ASCII_WORD:英文单词、数字、<tag> 等。
  • CHINESE:所有汉字字符(仅汉子和标点符号)
  • CJK:所有中、日、韩(CJK)字符和标点符号
  • THAI:所有泰文和标点符号
  • VIETNAMESE:所有越文和标点符号
  • ENGLISH:所有英文字符和标点符号
  • 数字: 0-9
正则表达式名称 替换
URL '<URL>'
电子邮件 '<Email>'
电话 '<Telephone>'
空格 ' '
HTML ' '
ASCII_WORD ' '
中文 ' '
CJK ' '

分词

segment 可以用于分词,英文和数字如 'PS4' 将保持原样,其他如中文 '中文' 将分割成单个单词格式 ['中', '文']

from plane import segment
segment('你看起来guaiguai的。<EOS>')
>>> ['你', '看', '起', '来', 'guaiguai', '的', '。', '<EOS>']

标点符号

punc.remove 将所有 Unicode 标点符号替换为 ' ' 或您发送给此函数作为参数的 replpunc.normalize 将一些 Unicode 标点符号规范化为英文标点符号。

注意:'+', '^', '$', '~' 以及一些字符不是标点符号。

from plane import punc

text = 'Hello world!'
punc.remove(text)

>>> 'Hello world '

# replace punctuation with special string
punc.remove(text, '<P>')

>>> 'Hello world<P>'

# normalize punctuations
punc.normalize('你读过那本《边城》吗?什么编程?!人生苦短,我用 Python。')

>>> '你读过那本(边城)吗?什么编程?!人生苦短,我用 Python.'

链式函数

Plane 包含 extractreplacesegmentpunc.removepunc.normalize,并且这些方法可以链式调用。由于 segment 返回列表,它只能在链式调用的末尾调用。

Plane.text 保存处理后的文本结果,Plane.values 保存提取的字符串结果。

from plane import Plane
from plane.pattern import EMAIL

p = Plane()
p.update('My email is my@email.com.').replace(EMAIL, '').text # update() will init Plane.text and Plane.values

>>> 'My email is .'

p.update('My email is my@email.com.').replace(EMAIL).segment()

>>> ['My', 'email', 'is', '<Email>', '.']

p.update('My email is my@email.com.').extract(EMAIL).values

>>> [Token(name='Email', value='my@email.com', start=12, end=24)]

管道

如果您喜欢,可以使用 Pipeline

segmentextract 只能出现在链式调用的末尾。

from plane import Pipeline, replace, segment
from plane.pattern import URL

pipe = Pipeline()
pipe.add(replace, URL, '')
pipe.add(segment)
pipe('http://www.guokr.com is online.')

>>> ['is', 'online', '.']

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

plane-0.2.1.tar.gz (13.2 kB 查看哈希值)

上传时间 源代码

构建发行版

plane-0.2.1-py3-none-any.whl (11.4 kB 查看哈希值)

上传时间 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面