{"id":1021,"date":"2022-12-19T14:31:42","date_gmt":"2022-12-19T14:31:42","guid":{"rendered":"https:\/\/www.online-audit.co.uk\/seo\/?p=1021"},"modified":"2023-01-13T10:06:31","modified_gmt":"2023-01-13T10:06:31","slug":"mattern-patching-with-chatgpt-and-ai","status":"publish","type":"post","link":"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/","title":{"rendered":"Pattern Matching with ChatGPT and AI"},"content":{"rendered":"<div id=\"robswords\"><h4><span class=\"ez-toc-section\" id=\"Pattern-Matching-is-Fun\"><\/span>Pattern Matching is Fun<span class=\"ez-toc-section-end\"><\/span><\/h4><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_43 counter-flat ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\">In this article<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" area-label=\"ez-toc-toggle-icon-1\"><label for=\"item-6a20c18ddab76\" aria-label=\"Table of Content\"><span style=\"display: flex;align-items: center;width: 35px;height: 30px;justify-content: center;direction:ltr;\"><svg style=\"fill: #1e73be;color:#1e73be\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #1e73be;color:#1e73be\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/label><input  type=\"checkbox\" id=\"item-6a20c18ddab76\"><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-visibility-hide-by-default' ><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#Pattern-Matching-is-Fun\" title=\"Pattern Matching is Fun\">Pattern Matching is Fun<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#Its-all-in-the-text%E2%80%A6\" title=\"It&#8217;s all in the text&#8230;\">It&#8217;s all in the text&#8230;<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#Word-count-Lists-Foot-prints-yada-yada\" title=\"Word count, Lists, Foot prints yada yada \">Word count, Lists, Foot prints yada yada <\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#Things-we-could-look-at\" title=\"Things we could look at\">Things we could look at<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#subheadingsi\" title=\"${subheadings[i]}\">${subheadings[i]}<\/a><\/li><\/ul><\/nav><\/div>\n<p> Playing with ChatGPT earlier, I  was fascinated by how obvious patterns were apparent in most of the outputs (read through to the end for a <a href=\"#conclude\">demo<\/a> ).<\/p><p> Mainly because of certain structures and similarities and I wondered around how cleaning it all up, and converting it to a version that wasn\u2019t so obviously AI would work out in practice.<\/p>\n<p>First off, it&#8217;s difficult!<\/p><p> Reading stuff as a human is shelling peas easy, we see things and say aha! Look at that. But getting a script to do the same around specifics is a different ball game, especially from the perspective of language rules and syntax. <\/p>\n<p>From the perspective of going from AI to a more humanised version there are a few things to consider when evaluating the text of course.<\/p><p> How does it read? Is it stilted or grammatically nonsensical? Is it repetitious, are some words used too many times to the point of ridiculousness? Are there common gotchas and things like that. <\/p>\n<h4><span class=\"ez-toc-section\" id=\"Its-all-in-the-text%E2%80%A6\"><\/span>It&#8217;s all in the text&#8230;<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>So, one of the things I had noticed when I asked ChatGPT to write articles was a tendency to create numbered lists of things. In the <span onclick=\"loadbox()\">sample text<\/span> below, you&#8217;ll find that each of the tips is constructed in the form Statement: Method and Reason.<\/p>\n<p>Whether this is, or isn&#8217;t a problem depends on the type of work being performed, but most humans wouldn&#8217;t used that format all of the time, and if they did then their articles would soon begin to look a little samey. So a means of identifying that and doing something with it could be useful<\/p>\n<p>So far, I&#8217;ve got as far as catch the &#8220;:&#8221; instance, grab the words that precede it, create a sub heading and then use the remaining text to form a paragraph and spit the output into a html file for use later on.<\/p>\n<p>Reasoning here might be that having a list of reasons set up differently with subheadings and paragraphs might break any expected pattern matching and humanise it slightly.  <\/p>\n<h4><span class=\"ez-toc-section\" id=\"Word-count-Lists-Foot-prints-yada-yada\"><\/span>Word count, Lists, Foot prints yada yada <span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Of course, it isn&#8217;t entirely about structure, it&#8217;s also about the language or words used too. I&#8217;d read about foot printing of AI output and that can be seen, if you look closely enough.<\/p>\n<ul><li>Opening paragraphs that I produced often introduced the topic outlining a hypothesis and then followed up with a reasoning around how, and well&#8230;,  that&#8217;s what we humans tend to do too right? <\/li>\n<li>The reasoning part of these opening paragraphs in the second sentence often started with the word By. &#8220;<i>We shall do amazing things blah blah. <b>By<\/b> doing this, we shall ensure that x will equal y&#8230;<\/i>&#8221; <\/li><li>The list or tips, or steps provided were all pretty similar in terms of length and word count, at least within a reasonably close number<\/li><li>The steps or tips were usually followed by a concluding paragraph that summed up the article with a few pithy words, that for me often lacked emotion or soul.<\/li><\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Things-we-could-look-at\"><\/span>Things we could look at<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>So in terms of the readability stuff we could do the whole Flesch-Kincaid Grade Level formula or the Gunning Fog Index. These formulas typically use measures such as average sentence length and the number of syllables per word to determine the readability of the text. <\/p><p>The issue here is that if the AI is aware of them, then the better ones will bake those factors in, so detecting them isn&#8217;t immediately useful, until perhaps you consider that maybe not all humans write in the same way and so, if a document was consistently around a score, then its footprint  would (if considered with others) be more easily identifiable.<\/p>\n<p>The use of the word &#8220;By&#8221; in the method part of the steps for instance could be flagged and identified as potentially problematic. We could use a little script to do a word count thing and determine a list of human defined uh ohs.<\/p>\n<p>We could as a result, ensure that our steps, were formatted differently or weren&#8217;t too close length wise &#8211; humanised, tick!<\/p>\n<p> We could even introduce typos and purposeful grandma mistakes \ud83d\ude09 and spellinks. AI doesn&#8217;t make those mistakes after all &#8211; humanised, tick!<\/p>\n<p>Most importantly mind, we could make sure that we always edited what we were intending to publish and made sure it was fit for purpose &#8211; humanised, tick! <\/p><p>It is a little bonkers that people will be looking to humanise AI generated text, but humanise they must, else they\u2019ll likely find themselves in the bad graces of Google and we know how that ends up. <\/p><p>In the short term perhaps, writers will be worth their weight in peanuts as their Labour value plummets. One envisions a dystopian production line of writers assigned with creating hundreds of 1000 word articles per day. The Fivrr brigade are no doubt wetting their pants with equal measures of glee and despair too no doubt, as for a time, it&#8217;s open season.<\/p><p>The flip-side of this is that good editors should be more precious a resource to have, as the smarter publishers realise that a human touch matters more now, than ever.<\/p>\n<p id=\"conclude\">Anyways, click the <span style=\"color:blue\">blue<\/span> text options that appear below for a demo.<\/p><p> It will take a sample block of text and look for a certain pattern in the text using a regex \/^.+?:\\s\/gm in this case the colon (:) so that all words before it are converted to headings and that all words after form paragraphs. <\/p><p>It will also count the number of words in each paragraph, enabling you to see how many words are in each. It will also show a comparison of what I&#8217;ve written contained within a div id of &#8220;robswords&#8221; which essentially contains the words of my blog post. <\/p><p>Finally, it will produce an exportable table of words, along with the html of the output text if needed.<\/p>\n<p>It will work for different blocks of text, but won&#8217;t create html output where a colon separator is absent. The sample text has colons to demonstrate; you could of course add other separators and increased sophistication, but maybe that&#8217;s for someone smarter than me.<\/p>\n\n<\/div>\n\n<p id=\"wordloader\" style=\"cursor:pointer;\"> <span onclick=\"loadbox();document.getElementById('wordloader').style.display='none'\"><b style=\"color:blue\">Load Sample Text<\/b><\/span> or paste your own.<\/p>\n\n<style>\n  .styled-textarea {\n    width:100%;\n    height: 400px;\n    font-size: 18px;\n    color: lime;\n    background-color: black;\n  }\n<\/style>\n<textarea id=\"textbox\" class=\"styled-textarea\" onblur=\"extractSubheadingsAndText(this)\"><\/textarea>\n\n<div id=\"Prompter\" style=\"cursor:pointer;color:blue\"><\/div>\n<div id=\"textinfo\">\n <p id=\"roboutput\"><\/p>\n<p id=\"readscore\"><\/p>\n<p id=\"wordCounts\"><\/p>\n<p id=\"word_length_opts\" style=\"display:none\">\nYou can change things up by altering word lengths and frequencies:<br><select id=\"minwordz\" onchange=\"extractSubheadingsAndText()\">\n<option value=\"3\">Min Number Of Words<\/option>\n<option value=\"2\">2<\/option>\n<option value=\"3\">3<\/option>\n<option value=\"4\">4<\/option>\n<option value=\"5\">5<\/option>\n<option value=\"6\">6<\/option>\n<\/select> or <select id=\"minlenz\" onchange=\"extractSubheadingsAndText()\">\n<option value=\"3\">Min Word Length<\/option>\n<option value=\"2\">2<\/option>\n<option value=\"3\">3<\/option>\n<option value=\"4\">4<\/option>\n<option value=\"5\">5<\/option>\n<option value=\"6\">6<\/option>\n<\/select><\/p>\n<div id=\"tabula\"><\/div>\n    <p id=\"saver\" style=\"cursor:pointer;color:blue\"><\/p>\n<div id=\"textboxoutput\"><\/div>\n\n<p id=\"explainer\"><\/p>\n\n<\/div>\n<script>\nfunction stripHTML(html) {\n  return html.replace(\/<[^>]+>\/g, '');\n}\nfunction extractSubheadingsAndText(inputString) {\n  \/\/ Extract subheadings\ndocument.getElementById('word_length_opts').style.display=\"block\";\nvar minwordz=document.getElementById('minwordz').value;\nvar minlenz=document.getElementById('minlenz').value;\n  var mystring= document.getElementById('textbox').value;\nvar tabula= counTheWords(mystring, 'count',minwordz,minlenz);\ndocument.getElementById('tabula').innerHTML = tabula;\nblogpostfk();\n calculateReadability(mystring);\n \/\/ const subheadingsRegex = \/^\\d\\.\\s.+?:\\s\/gm;\nconst subheadingsRegex = \/^.+?:\\s\/gm;\nconst matches = subheadingsRegex.exec(mystring);\n\nif (matches) {\n  const [, subheading] = matches;\n\/\/\/\/  if (subheading.length < mystring.length \/ 2) {\n    \/\/ Subheading is within the first 50% of the string\n  \n  let subheadings = textbox.value.match(subheadingsRegex);\n  \n  \/\/ Extract text\n\/\/  const textRegex = \/^\\d\\.\\s.+?:\\s(.+)\/gm;\nconst textRegex = \/^.+?:\\s(.+)\/gm;\n  let text = textbox.value.match(textRegex);\n\/\/  text = text.map(t => t.replace(\/^\\d\\.\\s.+?:\\s\/, \"\"));\ntext = text.map(t => t.replace(\/^.+?:\\s\/, \"\"));\n  \/\/ Create HTML\n \n  let html = \"\";\n  for (let i = 0; i < subheadings.length; i++) {\n    html += `<h2><span class=\"ez-toc-section\" id=\"subheadingsi\"><\/span>${subheadings[i]}<span class=\"ez-toc-section-end\"><\/span><\/h2><p>${text[i]}<\/p>`;\n  }\n\n  \/\/ Update textboxoutput div with HTML\n  document.getElementById('textboxoutput').innerHTML = html;\n  document.getElementById('Prompter').style.display=\"none\" ;\n  document.getElementById('saver').innerHTML = `<b><span  onclick=\"saveToTextFile('textboxoutput')\">Download HTML Text File<\/span><\/b> <span style='color:black'>or<\/span> <b><span  onclick=\"saveToTextFile('tabula')\">Download HTML Table<\/span><\/b>`; \n \/\/ }\n} else {\n  document.getElementById('textboxoutput').innerHTML = 'Sorry, there were no matches in the text.';\n}\n  \n  \n  \n\n\n  \n \/\/\n \n \/\/ Extract paragraph length and word count\nconst paragraphs = mystring.split(\"\\n\");\nlet paragraphLengths = [];\nlet wordCounts = [];\n\nparagraphs.forEach((paragraph, index) => {\n  \/\/ Strip HTML tags\n  const strippedParagraph = paragraph.replace(\/<[^>]*>\/g, \"\");\n\n  \/\/ Split into words and count\n  const words = strippedParagraph.split(\" \");\n  wordCounts.push(words.length);\n\n  \/\/ Count number of sentences\n  const sentences = strippedParagraph.split(\/[.!?]\/);\n  paragraphLengths.push(sentences.length);\n\n  \/\/ Output human readable result\n \/\/ console.log(`Paragraph ${index + 1} contained ${words.length} words, ${sentences.length} sentences, and ${strippedParagraph.length} characters.`);\n});\n\n \n\n \n \n \n \/\/\n\/\/document.getElementById('paragraphLengths').innerHTML = paragraphLengths.map((length, index) => `Paragraph ${index + 1} contained ${length} sentences.`).join('<br>');\ndocument.getElementById('wordCounts').innerHTML =\"<b>The word counts for our AI paragraphs was as follows<\/b><br>\"+wordCounts.map((count, index) => `Paragraph ${index + 1} contained ${count} words.`).join('<br>');\n\n\n  \n  \n\n}\n function loadbox(blah){\n     var words=`1. Conduct keyword research: Keywords are the phrases that people type into search engines to find what they are looking for. To optimize your website for search engines, it is important to identify the keywords that are relevant to your business and use them in your website content. You can use tools like Google's Keyword Planner to find popular keywords and get ideas for new ones.\n2. Use those keywords in your website content: Once you have identified your target keywords, make sure to use them throughout your website. This includes using them in your website's title and headings, as well as in the body of your content.\n3. Optimize your website's meta tags: Meta tags are pieces of code that provide information about your website to search engines. The two most important meta tags for SEO are the title tag and the description tag. The title tag should contain your target keywords and be no more than 60 characters long. The description tag should provide a brief summary of your website and also include your target keywords.\n4. Make sure your website is mobile-friendly: More and more people are using their smartphones to search the internet, so it is important to make sure that your website is mobile-friendly. Google now prioritizes mobile-friendly websites in its search results, so if your website is not optimized for mobile devices, you could be missing out on a lot of potential traffic.\n5. Use social media to promote your website: Social media platforms like Facebook, Twitter, and Instagram can be a great way to promote your website and attract new visitors. Make sure to include links to your website on your social media profiles and consider using paid social media advertising to reach a wider audience.\n6. Use internal and external links: Links are an important factor in SEO, as they help search engines understand the relevance and authority of your website. Make sure to include internal links to other pages on your website and external links to reputable websites in your content. This will help to improve the credibility of your website in the eyes of search engines.\n7. Use alt tags for images: Search engines are unable to \"see\" images the same way humans can, so it is important to use alt tags to describe the content of your images. This will help search engines understand what your images are about and improve the chances that they will be included in search results`;\n  document.getElementById('textbox').value = words;  \n  document.getElementById('Prompter').innerHTML = '<p onclick=\"extractSubheadingsAndText()\"><b>Count Words - Generate Text & Analysis<\/b><\/p>';  \n document.getElementById('explainer').innerHTML=\"The words in the text box are the steps taken from an AI produced article that asked the question, write an article about things to consider when doing seo.\";\n }\n\n\nfunction saveToTextFile(html) {\n    var html=  document.getElementById(html).innerHTML;\n  \/\/ Create a Blob object with the HTML string as its content\n  const blob = new Blob([html], { type: 'text\/plain' });\n\n  \/\/ Create a download link for the Blob object\n  const downloadLink = document.createElement('a');\n  downloadLink.download = 'output.txt';\n  downloadLink.href = URL.createObjectURL(blob);\n  downloadLink.style.display = 'none';\n\n  \/\/ Append the download link to the body of the document\n  document.body.appendChild(downloadLink);\n\n  \/\/ Click the download link to start the download\n  downloadLink.click();\n\n  \/\/ Remove the download link from the document\n  document.body.removeChild(downloadLink);\n  \n}\nfunction calculateReadability(text) {\n  \/\/ Split the text into words and sentences\n  const words = text.split(' ');\n  const sentences = text.split('. ');\n\n  \/\/ Calculate the average number of words per sentence\n  const averageWordsPerSentence = words.length \/ sentences.length;\n\n  \/\/ Calculate the average number of syllables per word\n  let totalSyllables = 0;\n  words.forEach((word) => {\n    totalSyllables += countSyllables(word);\n  });\n  const averageSyllablesPerWord = totalSyllables \/ words.length;\n\n  \/\/ Use the Flesch-Kincaid Grade Level formula to calculate the readability\n  const readability = 0.39 * averageWordsPerSentence + 11.8 * averageSyllablesPerWord - 15.59;\n\n  \/\/ Return the readability score\n  \/\/return readability;\n   document.getElementById('readscore').innerHTML = \"Sample text in the black box<br>Flesch-Kincaid Score:<b>\"+readability+\"<\/b>\";\n}\nfunction countSyllables(word) {\n  \/\/ Remove any trailing or leading punctuation\n  word = word.replace(\/^[^a-zA-Z]*|[^a-zA-Z]*$\/g, '');\n\n  \/\/ Split the word into syllables on vowel sounds\n  const syllables = word.split(\/[aeiouy]+\/);\n\n  \/\/ Count the number of syllables\n  return syllables.length;\n}\nfunction calculateReadability2(text) {\n  \/\/ Split the text into words and sentences\n  const words = text.split(' ');\n  const sentences = text.split('. ');\n\n  \/\/ Calculate the average number of words per sentence\n  const averageWordsPerSentence = words.length \/ sentences.length;\n\n  \/\/ Calculate the average number of syllables per word\n  let totalSyllables = 0;\n  words.forEach((word) => {\n    totalSyllables += countSyllables(word);\n  });\n  const averageSyllablesPerWord = totalSyllables \/ words.length;\n\n  \/\/ Use the Flesch-Kincaid Grade Level formula to calculate the readability\n  const readability = 0.39 * averageWordsPerSentence + 11.8 * averageSyllablesPerWord - 15.59;\n\n  \/\/ Return the readability score\n  \/\/return readability;\n   document.getElementById('roboutput').innerHTML = \"The words I've written in my post<br> Flesch-Kincaid Score:<b> \"+readability+\"<\/b>\";\n}\nfunction blogpostfk(){\nvar robswords = document.getElementById('robswords').innerHTML;\n robswords=stripHTML(robswords);\ncalculateReadability2(robswords);\n}\nfunction counTheWords(inputString, sOption, minCount, minLength) {\n \n  const wordCounts = {};\n  const words = inputString.split(\/\\s+\/);\n  words.forEach((word) => {\n    \/\/ Convert the word to lowercase before adding it to the object\n \n    const lowerCaseWord = word.toLowerCase();\n if (lowerCaseWord.length >= minLength) {\n    if (!wordCounts.hasOwnProperty(lowerCaseWord)) {\n      wordCounts[lowerCaseWord] = 1;\n    } else {\n      wordCounts[lowerCaseWord]++;\n    }\n   }\n  });\n  const wordCountArray = [];\n  for (const [word, count] of Object.entries(wordCounts)) {\n    if (count >= minCount) {\n      wordCountArray.push({ word, count });\n    }\n  }\n  if (sOption === 'count') {\n    wordCountArray.sort((a, b) => b.count - a.count);\n  } else if (sOption === 'alpha') {\n    wordCountArray.sort((a, b) => a.word.localeCompare(b.word));\n  } else if (sOption === 'length') {\n    wordCountArray.sort((a, b) => a.word.length - b.word.length);\n  }\n  let table = '<table id=\"tableoutput\">';\n  table += '<tr><th>Word<\/th><th>Count<\/th><\/tr>';\n  wordCountArray.forEach((wordCount) => {\n    table += `<tr><td>${wordCount.word}<\/td><td>${wordCount.count}<\/td><\/tr>`;\n  });\n  table += '<\/table>';\n  return table;\n}\n<\/script>","protected":false},"excerpt":{"rendered":"<p>Pattern Matching is Fun Playing with ChatGPT earlier, I was fascinated by how obvious patterns were apparent in most of the outputs (read through to the end for a demo ). Mainly because of certain structures and similarities and I wondered around how cleaning it all up, and converting it to a version that wasn\u2019t &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Pattern Matching with ChatGPT and AI&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1023,"comment_status":"closed","ping_status":"closed","sticky":true,"template":"","format":"standard","meta":{"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":[]},"categories":[47,46],"tags":[54],"class_list":["post-1021","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artificial-intelligence","category-seo","tag-chatgpt-seo","entry"],"jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.10 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Pattern Matching with ChatGPT and AI - Online Audit - SEO Marketing<\/title>\n<meta name=\"description\" content=\"I was playing with ChatGPT earlier, and decided to play with pattern matching for a while. Mainly because I noticed certain patterns and wandered around cleaning it up and converting it to some human readable version.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pattern Matching with ChatGPT and AI - Online Audit - SEO Marketing\" \/>\n<meta property=\"og:description\" content=\"I was playing with ChatGPT earlier, and decided to play with pattern matching for a while. Mainly because I noticed certain patterns and wandered around cleaning it up and converting it to some human readable version.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/\" \/>\n<meta property=\"og:site_name\" content=\"Online Audit - SEO Marketing\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/onlineauditseo\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-19T14:31:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-13T10:06:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.online-audit.co.uk\/seo\/wp-content\/uploads\/2022\/12\/idiotfunction.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"645\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rob Watts\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@robwatts\" \/>\n<meta name=\"twitter:site\" content=\"@seoprovision\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rob Watts\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/\"},\"author\":{\"name\":\"Rob Watts\",\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/#\/schema\/person\/6be946599d9520fd70fac0dacba53327\"},\"headline\":\"Pattern Matching with ChatGPT and AI\",\"datePublished\":\"2022-12-19T14:31:42+00:00\",\"dateModified\":\"2023-01-13T10:06:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/\"},\"wordCount\":1057,\"publisher\":{\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/#organization\"},\"keywords\":[\"chatgpt seo\"],\"articleSection\":[\"Artificial Intelligence\",\"SEO\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/\",\"url\":\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/\",\"name\":\"Pattern Matching with ChatGPT and AI - Online Audit - SEO Marketing\",\"isPartOf\":{\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/#website\"},\"datePublished\":\"2022-12-19T14:31:42+00:00\",\"dateModified\":\"2023-01-13T10:06:31+00:00\",\"description\":\"I was playing with ChatGPT earlier, and decided to play with pattern matching for a while. Mainly because I noticed certain patterns and wandered around cleaning it up and converting it to some human readable version.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.online-audit.co.uk\/seo\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pattern Matching with ChatGPT and AI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/#website\",\"url\":\"https:\/\/www.online-audit.co.uk\/seo\/\",\"name\":\"Online Audit - SEO Marketing\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.online-audit.co.uk\/seo\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/#organization\",\"name\":\"Online Audit - SEO Marketing\",\"url\":\"https:\/\/www.online-audit.co.uk\/seo\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/www.online-audit.co.uk\/seo\/wp-content\/uploads\/2022\/08\/me.jpeg?fit=200%2C200&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.online-audit.co.uk\/seo\/wp-content\/uploads\/2022\/08\/me.jpeg?fit=200%2C200&ssl=1\",\"width\":200,\"height\":200,\"caption\":\"Online Audit - SEO Marketing\"},\"image\":{\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/onlineauditseo\",\"https:\/\/twitter.com\/seoprovision\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/#\/schema\/person\/6be946599d9520fd70fac0dacba53327\",\"name\":\"Rob Watts\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.online-audit.co.uk\/seo\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ea405043a8ea8702868b8b81deb39c32be47a52d5e8618555d8e5605b4c62395?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ea405043a8ea8702868b8b81deb39c32be47a52d5e8618555d8e5605b4c62395?s=96&d=mm&r=g\",\"caption\":\"Rob Watts\"},\"description\":\"I've worked in search for over 25 years with businesses of all shapes and sizes.\",\"sameAs\":[\"https:\/\/www.online-audit.co.uk\/seo\",\"https:\/\/twitter.com\/robwatts\"],\"url\":\"https:\/\/www.online-audit.co.uk\/seo\/author\/robwatts\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pattern Matching with ChatGPT and AI - Online Audit - SEO Marketing","description":"I was playing with ChatGPT earlier, and decided to play with pattern matching for a while. Mainly because I noticed certain patterns and wandered around cleaning it up and converting it to some human readable version.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/","og_locale":"en_GB","og_type":"article","og_title":"Pattern Matching with ChatGPT and AI - Online Audit - SEO Marketing","og_description":"I was playing with ChatGPT earlier, and decided to play with pattern matching for a while. Mainly because I noticed certain patterns and wandered around cleaning it up and converting it to some human readable version.","og_url":"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/","og_site_name":"Online Audit - SEO Marketing","article_publisher":"https:\/\/www.facebook.com\/onlineauditseo","article_published_time":"2022-12-19T14:31:42+00:00","article_modified_time":"2023-01-13T10:06:31+00:00","og_image":[{"width":1000,"height":645,"url":"https:\/\/www.online-audit.co.uk\/seo\/wp-content\/uploads\/2022\/12\/idiotfunction.jpg","type":"image\/jpeg"}],"author":"Rob Watts","twitter_card":"summary_large_image","twitter_creator":"@robwatts","twitter_site":"@seoprovision","twitter_misc":{"Written by":"Rob Watts","Estimated reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#article","isPartOf":{"@id":"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/"},"author":{"name":"Rob Watts","@id":"https:\/\/www.online-audit.co.uk\/seo\/#\/schema\/person\/6be946599d9520fd70fac0dacba53327"},"headline":"Pattern Matching with ChatGPT and AI","datePublished":"2022-12-19T14:31:42+00:00","dateModified":"2023-01-13T10:06:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/"},"wordCount":1057,"publisher":{"@id":"https:\/\/www.online-audit.co.uk\/seo\/#organization"},"keywords":["chatgpt seo"],"articleSection":["Artificial Intelligence","SEO"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/","url":"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/","name":"Pattern Matching with ChatGPT and AI - Online Audit - SEO Marketing","isPartOf":{"@id":"https:\/\/www.online-audit.co.uk\/seo\/#website"},"datePublished":"2022-12-19T14:31:42+00:00","dateModified":"2023-01-13T10:06:31+00:00","description":"I was playing with ChatGPT earlier, and decided to play with pattern matching for a while. Mainly because I noticed certain patterns and wandered around cleaning it up and converting it to some human readable version.","breadcrumb":{"@id":"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.online-audit.co.uk\/seo\/mattern-patching-with-chatgpt-and-ai\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.online-audit.co.uk\/seo\/"},{"@type":"ListItem","position":2,"name":"Pattern Matching with ChatGPT and AI"}]},{"@type":"WebSite","@id":"https:\/\/www.online-audit.co.uk\/seo\/#website","url":"https:\/\/www.online-audit.co.uk\/seo\/","name":"Online Audit - SEO Marketing","description":"","publisher":{"@id":"https:\/\/www.online-audit.co.uk\/seo\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.online-audit.co.uk\/seo\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/www.online-audit.co.uk\/seo\/#organization","name":"Online Audit - SEO Marketing","url":"https:\/\/www.online-audit.co.uk\/seo\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.online-audit.co.uk\/seo\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/www.online-audit.co.uk\/seo\/wp-content\/uploads\/2022\/08\/me.jpeg?fit=200%2C200&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.online-audit.co.uk\/seo\/wp-content\/uploads\/2022\/08\/me.jpeg?fit=200%2C200&ssl=1","width":200,"height":200,"caption":"Online Audit - SEO Marketing"},"image":{"@id":"https:\/\/www.online-audit.co.uk\/seo\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/onlineauditseo","https:\/\/twitter.com\/seoprovision"]},{"@type":"Person","@id":"https:\/\/www.online-audit.co.uk\/seo\/#\/schema\/person\/6be946599d9520fd70fac0dacba53327","name":"Rob Watts","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.online-audit.co.uk\/seo\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ea405043a8ea8702868b8b81deb39c32be47a52d5e8618555d8e5605b4c62395?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ea405043a8ea8702868b8b81deb39c32be47a52d5e8618555d8e5605b4c62395?s=96&d=mm&r=g","caption":"Rob Watts"},"description":"I've worked in search for over 25 years with businesses of all shapes and sizes.","sameAs":["https:\/\/www.online-audit.co.uk\/seo","https:\/\/twitter.com\/robwatts"],"url":"https:\/\/www.online-audit.co.uk\/seo\/author\/robwatts\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.online-audit.co.uk\/seo\/wp-content\/uploads\/2022\/12\/idiotfunction.jpg?fit=1000%2C645&ssl=1","_links":{"self":[{"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/posts\/1021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/comments?post=1021"}],"version-history":[{"count":71,"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/posts\/1021\/revisions"}],"predecessor-version":[{"id":1141,"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/posts\/1021\/revisions\/1141"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/media\/1023"}],"wp:attachment":[{"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/media?parent=1021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/categories?post=1021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.online-audit.co.uk\/seo\/wp-json\/wp\/v2\/tags?post=1021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}