{ "cells": [ { "cell_type": "code", "execution_count": 63, "id": "0a4cbb53", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnamecontentimgdevice
05802347287电影院的24年前 @硅谷王川estp近核心准则//@硅谷王川: 换句话说,在人际关系上做感情投资,下场大概和投山寨币差不...https://tvax4.sinaimg.cn/crop.0.0.1002.1002.18...09月15日 00:29
13607565852然弟R变成啥也不想说 也不是不想说\\n觉得该说 但是说了没意义\\n有点低迷的现实\\n知乎老是给我推...https://tvax2.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端
27477863140北斗哈哈哈 @开心果奶酥我也是isfj- t 守护者 【速报】道枝是「isfj」💕💕💕\\n话说宝宝都没听过mbti是...https://tvax4.sinaimg.cn/crop.0.0.512.512.180/...莲理枝memi超话
35783324420小糸侑的领结我好像越来越难生气了。昨天刷到一个如何惹怒intp那句是是是你最有理我不生气,我妈骂我懒不做...https://tvax1.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端
47797398636frmmm-换了个新环境 再次发觉天蝎女istp这个属性在我身上真是展现地淋漓尽致https://tvax2.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端
..................
4952839786527噔噔噔噔噔橙做了新的16型人格测试,结果发现在和之间来回跳转\\n我是一会疯一会不疯吗?\\n发疯的时候是,...https://tvax1.sinaimg.cn/crop.0.0.1060.1060.18...HUAWEI Mate 40
4965521640059维祯Ryan-抱歉,作者已设置仅展示半年内微博,此微博已不可见。https://tvax1.sinaimg.cn/crop.0.0.512.512.180/...2022年12月30日 10:16
4977548701406好想看一次演唱会啊 @不卖唢呐新版mbti测试 大家要不要测测o网页链接https://tvax3.sinaimg.cn/crop.0.0.812.812.180/...iPad Pro
4987646216243杪春陟遐打字打到一半顿悟。。和在内心想法方面果然还是有共同点的https://tvax4.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端
4997742524608贡布里希区柯克虽然我是,但除了独处的时候我其实更像是,每次让别人猜我的mbti他们都猜是的程度\\n不过我平...https://tvax1.sinaimg.cn/crop.0.0.337.337.180/...Android
\n", "

497 rows × 5 columns

\n", "
" ], "text/plain": [ " id name \\\n", "0 5802347287 电影院的24年前 @硅谷王川 \n", "1 3607565852 然弟R \n", "2 7477863140 北斗哈哈哈 @开心果奶酥 \n", "3 5783324420 小糸侑的领结 \n", "4 7797398636 frmmm- \n", ".. ... ... \n", "495 2839786527 噔噔噔噔噔橙 \n", "496 5521640059 维祯Ryan- \n", "497 7548701406 好想看一次演唱会啊 @不卖唢呐 \n", "498 7646216243 杪春陟遐 \n", "499 7742524608 贡布里希区柯克 \n", "\n", " content \\\n", "0 estp近核心准则//@硅谷王川: 换句话说,在人际关系上做感情投资,下场大概和投山寨币差不... \n", "1 变成啥也不想说 也不是不想说\\n觉得该说 但是说了没意义\\n有点低迷的现实\\n知乎老是给我推... \n", "2 我也是isfj- t 守护者 【速报】道枝是「isfj」💕💕💕\\n话说宝宝都没听过mbti是... \n", "3 我好像越来越难生气了。昨天刷到一个如何惹怒intp那句是是是你最有理我不生气,我妈骂我懒不做... \n", "4 换了个新环境 再次发觉天蝎女istp这个属性在我身上真是展现地淋漓尽致 \n", ".. ... \n", "495 做了新的16型人格测试,结果发现在和之间来回跳转\\n我是一会疯一会不疯吗?\\n发疯的时候是,... \n", "496 抱歉,作者已设置仅展示半年内微博,此微博已不可见。 \n", "497 新版mbti测试 大家要不要测测o网页链接 \n", "498 打字打到一半顿悟。。和在内心想法方面果然还是有共同点的 \n", "499 虽然我是,但除了独处的时候我其实更像是,每次让别人猜我的mbti他们都猜是的程度\\n不过我平... \n", "\n", " img device \n", "0 https://tvax4.sinaimg.cn/crop.0.0.1002.1002.18... 09月15日 00:29 \n", "1 https://tvax2.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "2 https://tvax4.sinaimg.cn/crop.0.0.512.512.180/... 莲理枝memi超话 \n", "3 https://tvax1.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "4 https://tvax2.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", ".. ... ... \n", "495 https://tvax1.sinaimg.cn/crop.0.0.1060.1060.18... HUAWEI Mate 40 \n", "496 https://tvax1.sinaimg.cn/crop.0.0.512.512.180/... 2022年12月30日 10:16 \n", "497 https://tvax3.sinaimg.cn/crop.0.0.812.812.180/... iPad Pro \n", "498 https://tvax4.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "499 https://tvax1.sinaimg.cn/crop.0.0.337.337.180/... Android \n", "\n", "[497 rows x 5 columns]" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "#采集自微博搜索中含mbti类型的推文\n", "df = pd.read_csv('mbti_test.csv')\n", "#剔除content列中的nan数据\n", "df.dropna(inplace=True, subset=['content'])\n", "df" ] }, { "cell_type": "markdown", "id": "994a0a5a", "metadata": {}, "source": [ "

\n", "\n", "## 正则练习\n", "\n", "1. 提取含有mbti的记录\n", "2. 提取出含mbti类型出现的前后5个字符的文本(前5个字符,后5个字符, 含mbti本身, 窗体最长的长度是14)\n", "3. 识别出含mbti的记录中对应的mbti类型, 未识别的标记为\"未识别\"" ] }, { "cell_type": "markdown", "id": "417cad3c", "metadata": {}, "source": [ "

\n", "\n", "## 一、 提取含有mbti的记录\n", "\n", "实现方法有两种\n", "1. pd.Series.str.contains(regex_pattern)\n", "2. 定义一个正则处理函数regex_func, 使用pd.Series.apply(regex_func)\n", "\n", "
\n", "\n", "**正则表达式含义**\n", "\n", "```python\n", "mbtis = '[infj|entp|intp|intj|entj|enfj|infp|enfp|isfp|istp|isfj|istj|estp|esfp|estj|esfj]'\n", "```\n", "\n", "- ``[ 和 ]``:这是字符类(character class)的起始和结束标记,表示要匹配方括号内的任何字符。\n", "\n", "- ``infj|entp|intp|intj|entj|enfj|infp|enfp|isfp|istp|isfj|istj|estp|esfp|estj|esfj``:这是一个字符类内的字符集合,用于匹配MBTI类型词汇。每个MBTI类型词汇都以竖线 | 分隔,表示“或”的关系。这意味着正则表达式会匹配其中任何一个MBTI类型词汇。\n", "\n", "- ``+``:这是一个量词,表示匹配前面的字符集合(MBTI类型词汇)一次或多次。它使正则表达式可以匹配包含一个或多个MBTI类型词汇的文本。" ] }, { "cell_type": "code", "execution_count": 43, "id": "987c4d42", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 True\n", "1 True\n", "2 True\n", "3 True\n", "4 True\n", " ... \n", "495 False\n", "496 False\n", "497 False\n", "498 False\n", "499 False\n", "Name: content, Length: 497, dtype: bool" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mbtis = '[infj|entp|intp|intj|entj|enfj|infp|enfp|isfp|istp|isfj|istj|estp|esfp|estj|esfj]'\n", "\n", "df.content.str.contains(mbtis)" ] }, { "cell_type": "code", "execution_count": 64, "id": "cca4d730", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 True\n", "1 True\n", "2 True\n", "3 True\n", "4 True\n", " ... \n", "495 False\n", "496 False\n", "497 True\n", "498 False\n", "499 True\n", "Name: content, Length: 497, dtype: bool" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import re\n", "\n", "\n", "def has_mbti(text):\n", " mbtis = '[infj|entp|intp|intj|entj|enfj|infp|enfp|isfp|istp|isfj|istj|estp|esfp|estj|esfj]+'\n", "\n", " if re.findall(mbtis, text):\n", " return True\n", " else:\n", " return False\n", " \n", " \n", "df.content.apply(has_mbti)" ] }, { "cell_type": "code", "execution_count": 65, "id": "efba312a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnamecontentimgdevicehasMBTI
05802347287电影院的24年前 @硅谷王川estp近核心准则//@硅谷王川: 换句话说,在人际关系上做感情投资,下场大概和投山寨币差不...https://tvax4.sinaimg.cn/crop.0.0.1002.1002.18...09月15日 00:29True
13607565852然弟R变成啥也不想说 也不是不想说\\n觉得该说 但是说了没意义\\n有点低迷的现实\\n知乎老是给我推...https://tvax2.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端True
27477863140北斗哈哈哈 @开心果奶酥我也是isfj- t 守护者 【速报】道枝是「isfj」💕💕💕\\n话说宝宝都没听过mbti是...https://tvax4.sinaimg.cn/crop.0.0.512.512.180/...莲理枝memi超话True
35783324420小糸侑的领结我好像越来越难生气了。昨天刷到一个如何惹怒intp那句是是是你最有理我不生气,我妈骂我懒不做...https://tvax1.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端True
47797398636frmmm-换了个新环境 再次发觉天蝎女istp这个属性在我身上真是展现地淋漓尽致https://tvax2.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端True
.....................
4952839786527噔噔噔噔噔橙做了新的16型人格测试,结果发现在和之间来回跳转\\n我是一会疯一会不疯吗?\\n发疯的时候是,...https://tvax1.sinaimg.cn/crop.0.0.1060.1060.18...HUAWEI Mate 40False
4965521640059维祯Ryan-抱歉,作者已设置仅展示半年内微博,此微博已不可见。https://tvax1.sinaimg.cn/crop.0.0.512.512.180/...2022年12月30日 10:16False
4977548701406好想看一次演唱会啊 @不卖唢呐新版mbti测试 大家要不要测测o网页链接https://tvax3.sinaimg.cn/crop.0.0.812.812.180/...iPad ProTrue
4987646216243杪春陟遐打字打到一半顿悟。。和在内心想法方面果然还是有共同点的https://tvax4.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端False
4997742524608贡布里希区柯克虽然我是,但除了独处的时候我其实更像是,每次让别人猜我的mbti他们都猜是的程度\\n不过我平...https://tvax1.sinaimg.cn/crop.0.0.337.337.180/...AndroidTrue
\n", "

497 rows × 6 columns

\n", "
" ], "text/plain": [ " id name \\\n", "0 5802347287 电影院的24年前 @硅谷王川 \n", "1 3607565852 然弟R \n", "2 7477863140 北斗哈哈哈 @开心果奶酥 \n", "3 5783324420 小糸侑的领结 \n", "4 7797398636 frmmm- \n", ".. ... ... \n", "495 2839786527 噔噔噔噔噔橙 \n", "496 5521640059 维祯Ryan- \n", "497 7548701406 好想看一次演唱会啊 @不卖唢呐 \n", "498 7646216243 杪春陟遐 \n", "499 7742524608 贡布里希区柯克 \n", "\n", " content \\\n", "0 estp近核心准则//@硅谷王川: 换句话说,在人际关系上做感情投资,下场大概和投山寨币差不... \n", "1 变成啥也不想说 也不是不想说\\n觉得该说 但是说了没意义\\n有点低迷的现实\\n知乎老是给我推... \n", "2 我也是isfj- t 守护者 【速报】道枝是「isfj」💕💕💕\\n话说宝宝都没听过mbti是... \n", "3 我好像越来越难生气了。昨天刷到一个如何惹怒intp那句是是是你最有理我不生气,我妈骂我懒不做... \n", "4 换了个新环境 再次发觉天蝎女istp这个属性在我身上真是展现地淋漓尽致 \n", ".. ... \n", "495 做了新的16型人格测试,结果发现在和之间来回跳转\\n我是一会疯一会不疯吗?\\n发疯的时候是,... \n", "496 抱歉,作者已设置仅展示半年内微博,此微博已不可见。 \n", "497 新版mbti测试 大家要不要测测o网页链接 \n", "498 打字打到一半顿悟。。和在内心想法方面果然还是有共同点的 \n", "499 虽然我是,但除了独处的时候我其实更像是,每次让别人猜我的mbti他们都猜是的程度\\n不过我平... \n", "\n", " img device \\\n", "0 https://tvax4.sinaimg.cn/crop.0.0.1002.1002.18... 09月15日 00:29 \n", "1 https://tvax2.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "2 https://tvax4.sinaimg.cn/crop.0.0.512.512.180/... 莲理枝memi超话 \n", "3 https://tvax1.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "4 https://tvax2.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", ".. ... ... \n", "495 https://tvax1.sinaimg.cn/crop.0.0.1060.1060.18... HUAWEI Mate 40 \n", "496 https://tvax1.sinaimg.cn/crop.0.0.512.512.180/... 2022年12月30日 10:16 \n", "497 https://tvax3.sinaimg.cn/crop.0.0.812.812.180/... iPad Pro \n", "498 https://tvax4.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "499 https://tvax1.sinaimg.cn/crop.0.0.337.337.180/... Android \n", "\n", " hasMBTI \n", "0 True \n", "1 True \n", "2 True \n", "3 True \n", "4 True \n", ".. ... \n", "495 False \n", "496 False \n", "497 True \n", "498 False \n", "499 True \n", "\n", "[497 rows x 6 columns]" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#将结果存储到df中\n", "df['hasMBTI'] = df['content'].apply(has_mbti)\n", "df" ] }, { "cell_type": "markdown", "id": "c9ac641a", "metadata": {}, "source": [ "

\n", "\n", "## 二、mbti前后内容\n", "提取出含mbti类型出现的前后5个字符的文本(前5个字符,后5个字符, 含mbti本身, 窗体最长的长度是14)。\n", "\n", "这样后续的分析任务,就可以通过查看mbti字眼前后出现的字符,来更新正则表达式。\n", "\n", "\n", "
\n", "\n", "**正则表达式含义**\n", "\n", "```\n", "mbti_win = \"(.{0,5}(?:infj|entp|intp|intj|entj|enfj|infp|enfp|isfp|istp|isfj|istj|estp|esfp|estj|esfj).{0,5})\"\n", "```\n", "- ``(`` 和 ``)``这些括号用于将整个匹配结果捕获为一个分组\n", "- ``.{0,5}`` :这是一个量词,表示匹配前面的字符(.表示匹配任意字符)零次到五次。这部分用于匹配前面的文本,确保最多匹配前面的五个字符。\n", "- ``(?:infj|entp|intp|intj|entj|enfj|infp|enfp|isfp|istp|isfj|istj|estp|esfp|estj|esfj)``:这是一个非捕获分组,用于将多个MBTI类型词汇用 | 连接起来,表示匹配其中任何一个。\n", "- ``.{0,5}`` :这部分同样是一个量词,表示匹配后面的字符,确保最多匹配后面的五个字符。\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 66, "id": "72268da3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnamecontentimgdevicehasMBTIMBTI_win
05802347287电影院的24年前 @硅谷王川estp近核心准则//@硅谷王川: 换句话说,在人际关系上做感情投资,下场大概和投山寨币差不...https://tvax4.sinaimg.cn/crop.0.0.1002.1002.18...09月15日 00:29Trueestp近核心准则
13607565852然弟R变成啥也不想说 也不是不想说\\n觉得该说 但是说了没意义\\n有点低迷的现实\\n知乎老是给我推...https://tvax2.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端True是给我推送infp怎么怎么样
27477863140北斗哈哈哈 @开心果奶酥我也是isfj- t 守护者 【速报】道枝是「isfj」💕💕💕\\n话说宝宝都没听过mbti是...https://tvax4.sinaimg.cn/crop.0.0.512.512.180/...莲理枝memi超话True我也是isfj- t 守
35783324420小糸侑的领结我好像越来越难生气了。昨天刷到一个如何惹怒intp那句是是是你最有理我不生气,我妈骂我懒不做...https://tvax1.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端True个如何惹怒intp那句是是是
47797398636frmmm-换了个新环境 再次发觉天蝎女istp这个属性在我身上真是展现地淋漓尽致https://tvax2.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端True发觉天蝎女istp这个属性在
........................
4952839786527噔噔噔噔噔橙做了新的16型人格测试,结果发现在和之间来回跳转\\n我是一会疯一会不疯吗?\\n发疯的时候是,...https://tvax1.sinaimg.cn/crop.0.0.1060.1060.18...HUAWEI Mate 40False未识别
4965521640059维祯Ryan-抱歉,作者已设置仅展示半年内微博,此微博已不可见。https://tvax1.sinaimg.cn/crop.0.0.512.512.180/...2022年12月30日 10:16False未识别
4977548701406好想看一次演唱会啊 @不卖唢呐新版mbti测试 大家要不要测测o网页链接https://tvax3.sinaimg.cn/crop.0.0.812.812.180/...iPad ProTrue未识别
4987646216243杪春陟遐打字打到一半顿悟。。和在内心想法方面果然还是有共同点的https://tvax4.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端False未识别
4997742524608贡布里希区柯克虽然我是,但除了独处的时候我其实更像是,每次让别人猜我的mbti他们都猜是的程度\\n不过我平...https://tvax1.sinaimg.cn/crop.0.0.337.337.180/...AndroidTrue未识别
\n", "

497 rows × 7 columns

\n", "
" ], "text/plain": [ " id name \\\n", "0 5802347287 电影院的24年前 @硅谷王川 \n", "1 3607565852 然弟R \n", "2 7477863140 北斗哈哈哈 @开心果奶酥 \n", "3 5783324420 小糸侑的领结 \n", "4 7797398636 frmmm- \n", ".. ... ... \n", "495 2839786527 噔噔噔噔噔橙 \n", "496 5521640059 维祯Ryan- \n", "497 7548701406 好想看一次演唱会啊 @不卖唢呐 \n", "498 7646216243 杪春陟遐 \n", "499 7742524608 贡布里希区柯克 \n", "\n", " content \\\n", "0 estp近核心准则//@硅谷王川: 换句话说,在人际关系上做感情投资,下场大概和投山寨币差不... \n", "1 变成啥也不想说 也不是不想说\\n觉得该说 但是说了没意义\\n有点低迷的现实\\n知乎老是给我推... \n", "2 我也是isfj- t 守护者 【速报】道枝是「isfj」💕💕💕\\n话说宝宝都没听过mbti是... \n", "3 我好像越来越难生气了。昨天刷到一个如何惹怒intp那句是是是你最有理我不生气,我妈骂我懒不做... \n", "4 换了个新环境 再次发觉天蝎女istp这个属性在我身上真是展现地淋漓尽致 \n", ".. ... \n", "495 做了新的16型人格测试,结果发现在和之间来回跳转\\n我是一会疯一会不疯吗?\\n发疯的时候是,... \n", "496 抱歉,作者已设置仅展示半年内微博,此微博已不可见。 \n", "497 新版mbti测试 大家要不要测测o网页链接 \n", "498 打字打到一半顿悟。。和在内心想法方面果然还是有共同点的 \n", "499 虽然我是,但除了独处的时候我其实更像是,每次让别人猜我的mbti他们都猜是的程度\\n不过我平... \n", "\n", " img device \\\n", "0 https://tvax4.sinaimg.cn/crop.0.0.1002.1002.18... 09月15日 00:29 \n", "1 https://tvax2.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "2 https://tvax4.sinaimg.cn/crop.0.0.512.512.180/... 莲理枝memi超话 \n", "3 https://tvax1.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "4 https://tvax2.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", ".. ... ... \n", "495 https://tvax1.sinaimg.cn/crop.0.0.1060.1060.18... HUAWEI Mate 40 \n", "496 https://tvax1.sinaimg.cn/crop.0.0.512.512.180/... 2022年12月30日 10:16 \n", "497 https://tvax3.sinaimg.cn/crop.0.0.812.812.180/... iPad Pro \n", "498 https://tvax4.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "499 https://tvax1.sinaimg.cn/crop.0.0.337.337.180/... Android \n", "\n", " hasMBTI MBTI_win \n", "0 True estp近核心准则 \n", "1 True 是给我推送infp怎么怎么样 \n", "2 True 我也是isfj- t 守 \n", "3 True 个如何惹怒intp那句是是是 \n", "4 True 发觉天蝎女istp这个属性在 \n", ".. ... ... \n", "495 False 未识别 \n", "496 False 未识别 \n", "497 True 未识别 \n", "498 False 未识别 \n", "499 True 未识别 \n", "\n", "[497 rows x 7 columns]" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def mbti_window(text):\n", " #识别mbti的正则表达式 \n", " mbti_win = \"(.{0,5}(?:infj|entp|intp|intj|entj|enfj|infp|enfp|isfp|istp|isfj|istj|estp|esfp|estj|esfj).{0,5})\"\n", "\n", " try:\n", " return re.findall(mbti_win, text)[0]\n", " except:\n", " return \"未识别\"\n", "\n", "df['MBTI_win'] = df['content'].apply(mbti_window)\n", "df" ] }, { "cell_type": "markdown", "id": "631f6e05", "metadata": {}, "source": [ "

\n", "\n", "## 三、识别mbti类型\n", "刚刚的代码比较粗糙,只能判断文本中是否有mbti信息,但并不能判断该用户是否为某种mbti类型。\n", "\n", "微博文本中,只有 ``//@`` 前字符内容是微博用户所写内容。为了识别用户的mbti类型,可以先将我们看到的表达方式列举一下\n", "\n", "- ``我是[mbti]\n", "- ``自己是[mbti]``\n", "- ``从[mbti]变为[mbti]``\n", "- ``一直是[mbti]``\n", "- ``[mbti]我``\n", "- ``本[mbti]``\n", "- ......\n", "\n", "可以基于此设计一个严格的正则表达式,能识别到的记录,肯定能判断该用户的mbti类型。 未识别到的标记为 \"未识别\"\n", "\n", "\n", "
\n", "\n", "**正则表达式含义**\n", "\n", "```python\n", "mbti_regex = \"[我|自己|变成|一直|是|本]*(infj|entp|intp|intj|entj|enfj|infp|enfp|isfp|istp|isfj|istj|estp|esfp|estj|esfj)[我|俺|本|自己]*\"\n", "```\n", "\n", "- ``[我|自己|变成|一直|是|本]*``:这部分是一个字符集合,用于匹配前面的字符(关键词)。方括号 ``[...]`` 表示字符类,其中的字符是可选的,并且 * 表示匹配零次或多次。这意味着它可以匹配零个或多个出现在方括号中的字符,例如可以匹配\"我\"、\"自己\"、\"变成\"、\"一直\"、\"是\"、\"本\"等这些关键词。\n", "- ``(infj|entp|intp|intj|entj|enfj|infp|enfp|isfp|istp|isfj|istj|estp|esfp|estj|esfj)`` :这是一个分组,其中包含了MBTI类型词汇,用竖线 ``|`` 分隔,表示\"或\"的关系。这部分用于匹配任意一个MBTI类型词汇。\n", "- ``[我|俺|本|自己]*`` :这部分与第1部分类似,是一个字符集合,用于匹配后面的字符(关键词)。同样,方括号 ``[...]`` 表示字符类,其中的字符是可选的,并且 ``*`` 表示匹配零次或多次。" ] }, { "cell_type": "code", "execution_count": 69, "id": "ec8f7e43", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnamecontentimgdevicehasMBTIMBTI_winMBTI_Cat
05802347287电影院的24年前 @硅谷王川estp近核心准则//@硅谷王川: 换句话说,在人际关系上做感情投资,下场大概和投山寨币差不...https://tvax4.sinaimg.cn/crop.0.0.1002.1002.18...09月15日 00:29Trueestp近核心准则estp
13607565852然弟R变成啥也不想说 也不是不想说\\n觉得该说 但是说了没意义\\n有点低迷的现实\\n知乎老是给我推...https://tvax2.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端True是给我推送infp怎么怎么样infp
27477863140北斗哈哈哈 @开心果奶酥我也是isfj- t 守护者 【速报】道枝是「isfj」💕💕💕\\n话说宝宝都没听过mbti是...https://tvax4.sinaimg.cn/crop.0.0.512.512.180/...莲理枝memi超话True我也是isfj- t 守isfj
35783324420小糸侑的领结我好像越来越难生气了。昨天刷到一个如何惹怒intp那句是是是你最有理我不生气,我妈骂我懒不做...https://tvax1.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端True个如何惹怒intp那句是是是intp
47797398636frmmm-换了个新环境 再次发觉天蝎女istp这个属性在我身上真是展现地淋漓尽致https://tvax2.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端True发觉天蝎女istp这个属性在istp
...........................
4952839786527噔噔噔噔噔橙做了新的16型人格测试,结果发现在和之间来回跳转\\n我是一会疯一会不疯吗?\\n发疯的时候是,...https://tvax1.sinaimg.cn/crop.0.0.1060.1060.18...HUAWEI Mate 40False未识别未识别
4965521640059维祯Ryan-抱歉,作者已设置仅展示半年内微博,此微博已不可见。https://tvax1.sinaimg.cn/crop.0.0.512.512.180/...2022年12月30日 10:16False未识别未识别
4977548701406好想看一次演唱会啊 @不卖唢呐新版mbti测试 大家要不要测测o网页链接https://tvax3.sinaimg.cn/crop.0.0.812.812.180/...iPad ProTrue未识别未识别
4987646216243杪春陟遐打字打到一半顿悟。。和在内心想法方面果然还是有共同点的https://tvax4.sinaimg.cn/crop.0.0.512.512.180/...iPhone客户端False未识别未识别
4997742524608贡布里希区柯克虽然我是,但除了独处的时候我其实更像是,每次让别人猜我的mbti他们都猜是的程度\\n不过我平...https://tvax1.sinaimg.cn/crop.0.0.337.337.180/...AndroidTrue未识别未识别
\n", "

497 rows × 8 columns

\n", "
" ], "text/plain": [ " id name \\\n", "0 5802347287 电影院的24年前 @硅谷王川 \n", "1 3607565852 然弟R \n", "2 7477863140 北斗哈哈哈 @开心果奶酥 \n", "3 5783324420 小糸侑的领结 \n", "4 7797398636 frmmm- \n", ".. ... ... \n", "495 2839786527 噔噔噔噔噔橙 \n", "496 5521640059 维祯Ryan- \n", "497 7548701406 好想看一次演唱会啊 @不卖唢呐 \n", "498 7646216243 杪春陟遐 \n", "499 7742524608 贡布里希区柯克 \n", "\n", " content \\\n", "0 estp近核心准则//@硅谷王川: 换句话说,在人际关系上做感情投资,下场大概和投山寨币差不... \n", "1 变成啥也不想说 也不是不想说\\n觉得该说 但是说了没意义\\n有点低迷的现实\\n知乎老是给我推... \n", "2 我也是isfj- t 守护者 【速报】道枝是「isfj」💕💕💕\\n话说宝宝都没听过mbti是... \n", "3 我好像越来越难生气了。昨天刷到一个如何惹怒intp那句是是是你最有理我不生气,我妈骂我懒不做... \n", "4 换了个新环境 再次发觉天蝎女istp这个属性在我身上真是展现地淋漓尽致 \n", ".. ... \n", "495 做了新的16型人格测试,结果发现在和之间来回跳转\\n我是一会疯一会不疯吗?\\n发疯的时候是,... \n", "496 抱歉,作者已设置仅展示半年内微博,此微博已不可见。 \n", "497 新版mbti测试 大家要不要测测o网页链接 \n", "498 打字打到一半顿悟。。和在内心想法方面果然还是有共同点的 \n", "499 虽然我是,但除了独处的时候我其实更像是,每次让别人猜我的mbti他们都猜是的程度\\n不过我平... \n", "\n", " img device \\\n", "0 https://tvax4.sinaimg.cn/crop.0.0.1002.1002.18... 09月15日 00:29 \n", "1 https://tvax2.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "2 https://tvax4.sinaimg.cn/crop.0.0.512.512.180/... 莲理枝memi超话 \n", "3 https://tvax1.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "4 https://tvax2.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", ".. ... ... \n", "495 https://tvax1.sinaimg.cn/crop.0.0.1060.1060.18... HUAWEI Mate 40 \n", "496 https://tvax1.sinaimg.cn/crop.0.0.512.512.180/... 2022年12月30日 10:16 \n", "497 https://tvax3.sinaimg.cn/crop.0.0.812.812.180/... iPad Pro \n", "498 https://tvax4.sinaimg.cn/crop.0.0.512.512.180/... iPhone客户端 \n", "499 https://tvax1.sinaimg.cn/crop.0.0.337.337.180/... Android \n", "\n", " hasMBTI MBTI_win MBTI_Cat \n", "0 True estp近核心准则 estp \n", "1 True 是给我推送infp怎么怎么样 infp \n", "2 True 我也是isfj- t 守 isfj \n", "3 True 个如何惹怒intp那句是是是 intp \n", "4 True 发觉天蝎女istp这个属性在 istp \n", ".. ... ... ... \n", "495 False 未识别 未识别 \n", "496 False 未识别 未识别 \n", "497 True 未识别 未识别 \n", "498 False 未识别 未识别 \n", "499 True 未识别 未识别 \n", "\n", "[497 rows x 8 columns]" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "def identify_mbti(text):\n", " if '//@' in text:\n", " new_text = text.split('//@')[0]\n", " else:\n", " new_text = text\n", "\n", " #识别mbti的正则表达式 \n", " mbti_regex = \"[我|自己|变成|一直|是|本]*(infj|entp|intp|intj|entj|enfj|infp|enfp|isfp|istp|isfj|istj|estp|esfp|estj|esfj)[我|俺|本|自己]*\"\n", "\n", " try:\n", " return re.findall(mbti_regex, text)[0]\n", " except:\n", " return \"未识别\"\n", "\n", "#mbti类型\n", "df['MBTI_Cat'] = df['content'].apply(identify_mbti)\n", "df" ] }, { "cell_type": "code", "execution_count": 70, "id": "715c07f1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MBTI_Cat\n", "未识别 297\n", "infp 35\n", "isfj 20\n", "enfp 18\n", "intp 17\n", "isfp 16\n", "intj 14\n", "entp 12\n", "entj 11\n", "infj 11\n", "enfj 8\n", "estj 8\n", "istp 8\n", "istj 7\n", "esfp 6\n", "estp 5\n", "esfj 4\n", "Name: count, dtype: int64" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#各类型记录数\n", "df['MBTI_Cat'].value_counts()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }