openvibers/openvibe.live Commits
Public AI text drops sentences about a face, body or clothes the word lists do not name (teeth and a beard, outerwear, outdoor gear); the 3 clip lines left after #299 are rewritten at boot (#300)
Changes
@@@ -447,7 +447,12 @@ const _GENDERED_MANY = new RegExp(`\\b(two|three|four|five|several|some|the|bothconst _GENDER_ADJ = /\b(?:(?:a|an)\s+)?(?:male|female)\s+(?:or|and|\/)\s+(?:male|female)\s+|\b(?:male|female)\s+(?=(?:hosts?|streamers?|players?|speakers?|presenters?|gamers?|voices?|narrators?|commentators?|figures?|characters?|broadcasters?|viewers?|individuals?|persons?|people)\b)/gi;// What is left of a sentence about someone's hair, clothes or body ("a person adjusts their hair or clothing near the// counter") cannot be repaired word by word: the sentence goes.--const _GROOMING = /\b(?:their|his|her)\s+(?:own\s+)?(?:hair|beard|face|makeup|clothing|clothes|outfit|appearance|body|figure|looks)\b/i;++const _GROOMING = new RegExp('\\b(?:(?:their|his|her)\\s+(?:own\\s+)?(?:hair|beard|face|makeup|clothing|clothes|outfit|appearance|body|figure|looks)'++ // The face and body described ("smiling broadly, displaying white teeth and a beard") and clothes the word lists do++ // not name ("blue outerwear", "in outdoor gear"): the sentence goes. Things a person holds or reviews (headphones, a++ // headset on a desk) are not here.++ + '|beards?|mustaches?|moustaches?|teeth|grin(?:s|ning)?|smil(?:e|es|ing)\\s+(?:broadly|widely|warmly|at)|freckles|complexion|wrinkles'++ + '|hairstyles?|haircuts?|outerwear|(?:in|wearing)\\s+(?:[\\w-]+\\s+){0,2}gear|face\\s+shields?)\\b', 'i');function _noGender(text) {return text.split(/("[^"]*"?|“[^”]*”?)/).map((part, i) => (i % 2 ? part : part.replace(_GENDER_ADJ, (m) => (/^an?\s/i.test(m) ? m.slice(0, m.indexOf(' ') + 1) : ''))@@@ -56,6 +56,10 @@ const db = require('../server/db/database');['A home kitchen where a person adjusts their hair or clothing near the counter. A pot of soup simmers on the stove.', 'A pot of soup simmers on the stove.'],['A female streamer and two guys race karts; the other men cheer.', 'A streamer and two people race karts; the other people cheer.'],['An Iron Man skin fights Pac-Man in a man-made arena while chat says "that man is cracked".', 'An Iron Man skin fights Pac-Man in a man-made arena while chat says "that man is cracked".'],++ // The face, body and clothes the word lists do not name (production card lines after #299): the sentence goes.++ ['A person in outdoor gear with a helmet and face shield is looking off to the side. A second person leans into the frame from the left.', 'A second person leans into the frame from the left.'],++ ['The video features close-up shots of the streamer smiling broadly, displaying white teeth and a beard. The chat cheers.', 'The chat cheers.'],++ ['The streamer packs camera gear into a bag.', 'The streamer packs camera gear into a bag.'],];let off = 0;// Public memory text is the observation alone: the raw transcript clause stays for the AI's context, never shown.
@@ -447,7 +447,12 @@ const _GENDERED_MANY = new RegExp(`\\b(two|three|four|five|several|some|the|both
@@ -447,7 +447,12 @@ const _GENDERED_MANY = new RegExp(`\\b(two|three|four|five|several|some|the|both
const _GENDER_ADJ = /\b(?:(?:a|an)\s+)?(?:male|female)\s+(?:or|and|\/)\s+(?:male|female)\s+|\b(?:male|female)\s+(?=(?:hosts?|streamers?|players?|speakers?|presenters?|gamers?|voices?|narrators?|commentators?|figures?|characters?|broadcasters?|viewers?|individuals?|persons?|people)\b)/gi;
const _GENDER_ADJ = /\b(?:(?:a|an)\s+)?(?:male|female)\s+(?:or|and|\/)\s+(?:male|female)\s+|\b(?:male|female)\s+(?=(?:hosts?|streamers?|players?|speakers?|presenters?|gamers?|voices?|narrators?|commentators?|figures?|characters?|broadcasters?|viewers?|individuals?|persons?|people)\b)/gi;
// What is left of a sentence about someone's hair, clothes or body ("a person adjusts their hair or clothing near the
// What is left of a sentence about someone's hair, clothes or body ("a person adjusts their hair or clothing near the
// counter") cannot be repaired word by word: the sentence goes.
// counter") cannot be repaired word by word: the sentence goes.
-const _GROOMING = /\b(?:their|his|her)\s+(?:own\s+)?(?:hair|beard|face|makeup|clothing|clothes|outfit|appearance|body|figure|looks)\b/i;
+const _GROOMING = new RegExp('\\b(?:(?:their|his|her)\\s+(?:own\\s+)?(?:hair|beard|face|makeup|clothing|clothes|outfit|appearance|body|figure|looks)'
+ // The face and body described ("smiling broadly, displaying white teeth and a beard") and clothes the word lists do
+ // not name ("blue outerwear", "in outdoor gear"): the sentence goes. Things a person holds or reviews (headphones, a
+ // headset on a desk) are not here.
+ + '|beards?|mustaches?|moustaches?|teeth|grin(?:s|ning)?|smil(?:e|es|ing)\\s+(?:broadly|widely|warmly|at)|freckles|complexion|wrinkles'
+ + '|hairstyles?|haircuts?|outerwear|(?:in|wearing)\\s+(?:[\\w-]+\\s+){0,2}gear|face\\s+shields?)\\b', 'i');
function _noGender(text) {
function _noGender(text) {
return text.split(/("[^"]*"?|“[^”]*”?)/).map((part, i) => (i % 2 ? part : part
return text.split(/("[^"]*"?|“[^”]*”?)/).map((part, i) => (i % 2 ? part : part
.replace(_GENDER_ADJ, (m) => (/^an?\s/i.test(m) ? m.slice(0, m.indexOf(' ') + 1) : ''))
.replace(_GENDER_ADJ, (m) => (/^an?\s/i.test(m) ? m.slice(0, m.indexOf(' ') + 1) : ''))
@@ -56,6 +56,10 @@ const db = require('../server/db/database');
@@ -56,6 +56,10 @@ const db = require('../server/db/database');
['A home kitchen where a person adjusts their hair or clothing near the counter. A pot of soup simmers on the stove.', 'A pot of soup simmers on the stove.'],
['A home kitchen where a person adjusts their hair or clothing near the counter. A pot of soup simmers on the stove.', 'A pot of soup simmers on the stove.'],
['A female streamer and two guys race karts; the other men cheer.', 'A streamer and two people race karts; the other people cheer.'],
['A female streamer and two guys race karts; the other men cheer.', 'A streamer and two people race karts; the other people cheer.'],
['An Iron Man skin fights Pac-Man in a man-made arena while chat says "that man is cracked".', 'An Iron Man skin fights Pac-Man in a man-made arena while chat says "that man is cracked".'],
['An Iron Man skin fights Pac-Man in a man-made arena while chat says "that man is cracked".', 'An Iron Man skin fights Pac-Man in a man-made arena while chat says "that man is cracked".'],
+ // The face, body and clothes the word lists do not name (production card lines after #299): the sentence goes.
+ ['A person in outdoor gear with a helmet and face shield is looking off to the side. A second person leans into the frame from the left.', 'A second person leans into the frame from the left.'],
+ ['The video features close-up shots of the streamer smiling broadly, displaying white teeth and a beard. The chat cheers.', 'The chat cheers.'],
+ ['The streamer packs camera gear into a bag.', 'The streamer packs camera gear into a bag.'],
];
];
let off = 0;
let off = 0;
// Public memory text is the observation alone: the raw transcript clause stays for the AI's context, never shown.
// Public memory text is the observation alone: the raw transcript clause stays for the AI's context, never shown.